Iam是反应原生,graphql和Aws AppSync的新手。我们尝试使用aws appsync构建一个react-native应用程序。当我运行 react-native run-android 时,它会抛出错误
传递给解析器的不是有效的GraphQL DocumentNode。您可能需要使用' graphql-tag'或将您的操作转换为文档的其他方法
请看看
图片网址以获取参考资料。
import { graphql, compose } from 'react-apollo';
import gql from 'graphql-tag';
const listMessages = graphql(gql`
query listMessages {
listMessages {
id
text
createdAt
sentBy {
id
name
}
}
}`)
const createMessage = graphql(gql`
mutation createMessage($text: String!, $sentById: ID!) {
createMessage(input : {
id : $sentById
text : $text
createdAt : "1/06/2018"
updateAt:"1/06/2018"
}){
sentBy {
id
name
}
}
}`)
export default compose(
graphql(createMessage,{
options: {
fetchPolicy: 'cache-and-network'
}
}, {name : 'createMessageMutation'}),
graphql(listMessages, {
options : {
fetchPolicy: 'cache-and-network'
}
}, {name: 'listMessagesQuery'})
)(Chat)
上面的代码是graphql的基本实现。
我无法找出错误请帮帮我。谢谢!提前
答案 0 :(得分:1)
您正在调用graphql
函数两次 - 一次在listMessages
和createMessage
的定义中,然后再在您的导出语句中。您需要更改定义用于查询的变量的方式:
const createMessage = gql`
mutation createMessage($text: String!, $sentById: ID!) {
createMessage(input : {
id : $sentById
text : $text
createdAt : "1/06/2018"
updateAt:"1/06/2018"
}) {
sentBy {
id
name
}
}
}`
答案 1 :(得分:0)
您只能使用GQL定义查询。
您可以使用任何一个。
无需添加graphql。
import gql from 'graphql-tag';
const listMessages = gql
query listMessages {
listMessages {
id
text
createdAt
sentBy {
id
name
}
}
}