传递给解析器不是有效的 GraphQL DocumentNode。您可能需要使用“graphql-tag”或其他方法将您的操作转换为文档
Posted
技术标签:
【中文标题】传递给解析器不是有效的 GraphQL DocumentNode。您可能需要使用“graphql-tag”或其他方法将您的操作转换为文档【英文标题】:passed to parser was not a valid GraphQL DocumentNode.you may need to use 'graphql-tag' or another method to convert your operation into a document 【发布时间】:2018-11-11 13:44:36 【问题描述】:我是 react-native、graphql 和 Aws AppSync 的新手。我们尝试使用 aws appsync 构建一个 react-native 应用程序。当我运行 react-native run-android 时,它会抛出一个错误提示
传递给解析器的不是有效的 GraphQL DocumentNode。您可能需要使用“graphql-tag”或其他方法将您的操作转换为文档
请看一下
https://i.stack.imgur.com/hr5fA.jpg
获取参考的图片网址。
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的基本实现。
我无法真正找出错误请帮助我。谢谢!提前
【问题讨论】:
【参考方案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
`
【讨论】:
【参考方案2】:您只能使用 GQL 来定义您的查询。
你可以使用任何一个。
无需添加graphql。
import gql from 'graphql-tag';
const listMessages = gql
query listMessages
listMessages
id
text
createdAt
sentBy
id
name
【讨论】:
以上是关于传递给解析器不是有效的 GraphQL DocumentNode。您可能需要使用“graphql-tag”或其他方法将您的操作转换为文档的主要内容,如果未能解决你的问题,请参考以下文章