Должен содержать определение запроса - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в реакции-нативной и appsync, graphql.Мы пытаемся реализовать приложение appsync с использованием реагировать-нативный, когда я пытался запустить его, выдает ошибку: 1001 *

14: 16:38: должен содержать определение запроса.* null: null в getQueryDefinition - node_modules / apollo-cache-inmemory / lib / bundle.umd.js: 649: 64 в diffQueryAgainstStore - node_modules / apollo-cache-inmemory / lib / bundle.umd.js: 559: 32 в readQuery- node_modules / apollo-cache-inmemory / lib / bundle.umd.js: 899: 38 в read - node_modules / apollo-cache-inmemory / lib / bundle.umd.js: 992: 23 в readQuery * null: ноль в обновлении- node_modules / apollo-client / bundle.umd.js: 1609: 0 in - node_modules / apollo-utilities / lib / bundle.umd.js: 818: 21 в tryFunctionOrLogError * null: нуль в - node_modules / apollo-cache-inmemory/lib/bundle.umd.js:961:22 в executeTransaction - node_modules / apollo-client / bundle.umd.js: 1473: 0 в markMutationResult - node_modules / apollo-client / bundle.umd.js: 797: 20 в следующем- node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js: 150: 3 в notifySubscription - node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js: 195: 5в onNotify * null: ноль в следующем - node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js: 150: 3 в notifySubscription * null: null в flushSubscription - узлы-модули / zen-observable-ts / node_modules / zen-observable / lib / Observable.js: 190: 26 в * null: null in - узел_модулей / обещание / setimmediate / core.js: 37: 14 в tryCallOne - узел_модули / обещание / setimmediate / core.js: 123: 25 в - ... еще 10 кадров стека из внутренних компонентов фреймворка

Я пытался отследить ошибку в apollo-cache, но не смог ее найти. Получаю это, когда нажимаю кнопку отправки.

import React, { Component } from 'react';
import { KeyboardAvoidingView, Text, Button, TextInput, StyleSheet, Alert } from 'react-native';

export default class ChatInput extends Component {

  constructor(props) {
      super(props);
      this.userid = props.userid;
      this.state = {
          text: ''
      }
  }

  handleSend = () => {
      if (this.state.text === '') {
          return false;
      }
      const chat = {
          userid: this.userid,
          text: this.state.text,
          createdAt: new Date().toISOString()
      }
      this.props.onSubmit(chat);
      this.setState({
         text: ''
      })
      this.textInput.clear();
  }

  render() {
    return (
    <KeyboardAvoidingView>
        <TextInput ref={input => { this.textInput = input }} placeholder="Message.." 
        onChangeText={(text) => this.setState({text})} onSubmitEditing={this.handleSend} 
        autoFocus={true} blurOnSubmit={false} returnKeyType="send"></TextInput>
        <Button title="Send" onPress={this.handleSend}></Button>
    </KeyboardAvoidingView>
    );
  }
}



 const ChatInputData = compose(
    graphql(PostMessage, {
        options: {
            fetchPolicy: 'no-cache'
        },props: (props) => ({
                onSubmit: chat => {
                    props.mutate({
                        variables: chat,
                        optimisticResponse: {
                            __typename: 'Mutation',
                            post: {
                                __typename: ChatHistory,
                                id: chat.createdAt,
                               userid: chat.userid,
                                text: chat.text,
                                createdAt: chat.createdAt
                            }
                        },
                        update: (proxy, {data: {post}}) => {
                            const data = proxy.readQuery({ query: PostMessage });
                            data.listPostMessages.items.push(Object.assign({}, post));
                            proxy.writeData({query: listPostMessages, data});
                        }
                    })
                }
            })
        })
    )(ChatInput)

Пожалуйста, помогите мне! Спасибо заранее

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Ошибка означает, что в импортированном PostMessage запрос не найден.Убедитесь, что это выглядит так: (а не сокращенный эквивалент)

query postMessage($id: ID!) {
    postMessage(id: $id) {
        id
        title
    }
}
0 голосов
/ 07 июня 2018

Я исправил эту ошибку, исправив свою мутацию, т. Е. PostMesssage в моем случае. Эта ошибка

должна содержать определение запроса

в основном, если ваш запрос неверен, чтоВы написали в GraphQL.Начните видеть, как вы передаете свои переменные и как вы их используете и как вы их определяете.

0 голосов
/ 05 июня 2018

В этой строке:

 const data = proxy.readQuery({ query: PostMessage });

Я не вижу ссылки на PostMessage, где вы хотите определить свой запрос.

...