如何通过AWS AppSync客户端将包含字符串的变量传递给GraphQL查询?

时间:2019-03-15 11:43:10

标签: reactjs graphql aws-appsync aws-amplify appsync-apollo-client

我正在使用React JS应用程序通过AWS AppSync客户端和GraphQL API向云中的NoSQL表提交数据。我使用AWS Amplify自动生成了GraphQL操作,现在尝试在我的React代码中提交以下操作: (note和company只是处于React状态的字符串值)

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

这将产生异常“ [object Object]”

现在,如果我像这样直接传递字符串

  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)中。但是,然后将相应的数据库条目用双引号“ Example Company”而不是Example Company包裹。

我希望避免手动修改自动生成的GraphQL API代码,因为我希望它会经常更改。

客户端上是否有一个选项可以将实际的字符串从React状态获取到API调用中,而GraphQL不会将其标识为对象,或者它在数据库中以双引号结尾?

1 个答案:

答案 0 :(得分:1)

您尝试过模板文字吗?

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

当我在开发控制台中进行快速测试时,肯定会删除您遇到的多余报价。