Iam new to react-native和appsync,graphql.we正在尝试使用react-native实现一个appsync应用程序,当我试图运行它时抛出错误说
14:16:38:必须包含查询定义。 * null:getQueryDefinition中的null - diffQueryAgainstStore中的node_modules / apollo-cache-inmemory / lib / bundle.umd.js:649:64 - readQueryFromStore中的node_modules / apollo-cache-inmemory / lib / bundle.umd.js:559:32 - 读取中的node_modules / apollo-cache-inmemory / lib / bundle.umd.js:899:38 - readQuery中的node_modules / apollo-cache-inmemory / lib / bundle.umd.js:992:23 * null:更新中为null - node_modules / apollo-client / bundle.umd.js:1609:0 in - tryFunctionOrLogError中的node_modules / apollo-utilities / lib / bundle.umd.js:818:21 * null:null in - performTransaction中的node_modules / apollo-cache-inmemory / lib / bundle.umd.js:961:22 - markMutationResult中的node_modules / apollo-client / bundle.umd.js:1473:0 - node_modules / apollo-client / bundle.umd.js:797:20 - notifySubscription中的node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js:150:3 - onNotify中的node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js:195:5 * null:下一个为null - notifySubscription中的node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js:150:3 * null:flushSubscription中的null - node_modules / zen-observable-ts / node_modules / zen-observable / lib / Observable.js:190:26 in * null:null in - 在tryCallOne中的node_modules / promise / setimmediate / core.js:37:14 - node_modules / promise / setimmediate / core.js:123:25 in - ......来自框架内部的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)
请帮帮我!谢谢你提前
答案 0 :(得分:0)
在这一行:
const data = proxy.readQuery({ query: PostMessage });
我没有看到您要定义查询的PostMessage
的引用。
答案 1 :(得分:0)
错误表示在导入的PostMessage
中无法找到查询。确保它看起来像这样:(而不是速记等效物)
query postMessage($id: ID!) {
postMessage(id: $id) {
id
title
}
}
答案 2 :(得分:0)
我通过纠正我的变异解决了这个错误,即我的案例中的PostMesssage。这个错误
必须包含查询定义
主要发生在您使用graphql编写的查询不正确的情况下。开始了解如何传递变量以及如何使用它们以及如何定义它们。
答案 3 :(得分:0)
当我添加了新的解析器功能(在新文件中)但未将对这些解析器的引用包括到graphql的可执行模式中时,我也遇到了此错误。