Как передать переменную, содержащую строку, в запрос GraphQL через клиент AWS AppSync? - PullRequest
1 голос
/ 15 марта 2019

Я использую приложение React JS для отправки данных с помощью клиента AWS AppSync и API GraphQL в таблицу NoSQL в облаке. Я автоматически сгенерировал операции GraphQL с помощью AWS Amplify, и теперь я пытаюсь отправить следующую операцию в своем коде React: (примечание и компания - это просто строковые значения, хранящиеся в состоянии React)

  createOffer(note, company) {
    const input = {
            place: company,
            title_de: note,
            category: "product",
        }
    return API.graphql(graphqlOperation(mutations.createOffers, {input: input
    }));

Это создает исключение "[объект объекта]"

Теперь, если я передам строки напрямую, как это

  createOffer() {
    const input = {
            place: "Example Company ",
            title_de: "Example Title",
            category: "product",
        }
    return API.graphql(graphqlOperation(mutations.createOffers, {input: input
    }));

работает нормально. Единственный обходной путь, который я нашел, - это обернуть переменные, содержащие строковые значения, в JSON.stringify (company) и JSON.stringify (note). Но затем соответствующие записи в базе данных заключаются в двойные кавычки «Пример компании», а не «Пример компании».

Я хочу избегать ручного изменения автоматически сгенерированного кода API GraphQL, поскольку я ожидаю, что он будет часто меняться.

Есть ли возможность на стороне клиента получить фактическую строку из состояния React в вызове API без GraphQL, идентифицирующего ее как объект или заканчивающейся двойными кавычками в базе данных?

1 Ответ

1 голос
/ 15 марта 2019

Вы пробовали литералы шаблонов?

const input = {
  place: `${company}`,
  title_de: `${note}`,
  category: 'product'
}

Когда я запускал быстрый тест в консоли разработчика, это определенно удаляет лишние кавычки, которые вы испытывали.

...