【问题标题】:AWS Amplify / Dynamo - array of objects coming back as array of stringsAWS Amplify / Dynamodb - 作为字符串数组返回的对象数组
【发布时间】:2020-06-07 00:57:22
【问题描述】:

我在 react-app 中使用 react-select 作为“多选”来设置多种音乐流派。这会产生一个对象数组作为该输入的值。我正在使用 AWS Amplify / DynamoDB。

我不确定这是否是我的 schema.graphql(如下)的问题,我如何处理/错误处理数据,或者只是我的一般编码缺陷,但数据是这样发送的:

[{label='Afrobeat', value='Afrobeat'}, {label='Bikutsi', value='Bikutsi'}, {label='Benga', value='Benga'}]

并像这样返回(去掉单引号),在每个节点周围添加双引号):

["{label=Afrobeat, value=Afrobeat}", "{label=Bikutsi, value=Bikutsi}", "{label=Benga, value=Benga}"]

react-select 无法像那样处理数据,但我无法想象我必须做一些棘手的客户端处理才能使其工作。任何帮助将不胜感激。

我对于这种歌曲类型的 schema.graphql 是:

type Song @model {
  album: Album @connection(name: "AlbumSongs")
  composer: String
  description: String
  duration: String
  genre: [String!]! // is this the correct value for an array?
  id: ID!
  instruments: String
  tags: [String!]!
  title: String!
}

【问题讨论】:

    标签: reactjs graphql aws-amplify react-select


    【解决方案1】:

    需要有另一个类型 GenreOptions 以使其作为对象数组而不是字符串数组返回。

    类似:

    type GenreOptions {
      label: String!
      value: String! // also another option is to have an enum type
    }
    
    type Song @model {
      genre: [GenreOptions!]!
    }
    

    那么查询将如下所示:

    Song {
      genre {
        label
        value
      }
    }
    

    【讨论】:

    • 非常感谢。我有一千多种流派......我将如何“枚举” GenreValues 对象中的那些流派? (目前我只是从我的应用程序中的data.js 文件中提取它们)。
    • 没问题。枚举的另一种选择就是value: String!
    • 太棒了。所以要清楚,像这样:enum GenreValues { value: String! }? (SV 代码的颜色很奇怪,所以我想知道我是否正确)。
    • @KirkRoss 我已经更新了代码。如果您将使用字符串,则不需要枚举。
    • 万分感谢。顺便说一句......琐事......如果你碰巧看过,硅谷我哥哥在上面扮演加文贝尔森:)
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多