AWS Amplify / Dynamo - массив объектов, возвращающихся как массив строк - PullRequest
0 голосов
/ 23 февраля 2020

Я использую react-select как «мульти-выбор» в приложении реагирования для установки нескольких жанров музыки c. Это приводит к массиву объектов в качестве значения для этого ввода. Я использую 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 не может обработать данные таким образом, но я могу Я не думаю, что мне пришлось бы сделать какую-то хитрую обработку на стороне клиента, чтобы это работало. Любая помощь будет принята с благодарностью.

My 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!
}

1 Ответ

1 голос
/ 23 февраля 2020

Необходим другой тип 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...