传递给解析器不是一个有效的GraphQL DocumentNode.you可能需要使用' graphql-tag'或将您的操作转换为文档的其他方法

时间:2018-06-01 12:03:53

标签: reactjs graphql aws-sdk react-native-android aws-appsync

Iam是反应原生,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的基本实现。

我无法找出错误请帮帮我。谢谢!提前

2 个答案:

答案 0 :(得分:1)

您正在调用graphql函数两次 - 一次在listMessagescreateMessage的定义中,然后再在您的导出语句中。您需要更改定义用于查询的变量的方式:

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