我已经使用graphql-yoga
并使用volatile
作为我的应用程序的数据库创建了一个graphql服务器。
到目前为止,发布效果很好,我在尝试获取已添加到数据库中的数据时遇到了问题。
这是我的代码,因此您可以帮助我弄清楚我在做什么错。
在我的架构中,我有下一个。
type Query{
memes:[Meme!]!
meme(id:ID): Meme
text:String!
}
memes
查询失败。
查询本身就是下一个。
Query:{
memes:()=>fetch(`${VOLATILE_URL}`).then(res=>console.log(res.json())),
meme:(parent,args)=>memes.find(meme=>meme.id===args.id),
}
这就是我添加数据的方式。
let idCount = 0;
const memes = [];
type Mutation{
createMeme(url:String!, text:String!):Meme
}
Mutation:{
createMeme:(parent,args)=>{
const meme = {
id:`${idCount++}`,
url:args.url,
text:args.text,
}
memes.push(meme);
fetch(`${VOLATILE_URL}&val={"memes_list":${memes}}`)
.then(res=>console.log(res));
//fetch(`${VOLATILE_URL}${meme.id}&val={"id":${meme.id},"url":${meme.url},"text":${meme.text}}`)
// .then(res=> console.log(res));
},
}
现在,访问https://volatile.wtf/?key=memes
时,响应是我的带有对象数组的对象。
但是以这种方式进行请求。
query{
memes{
id
url
text
}
}
我得到Cannot return null for non-nullable field Query.memes
。
我是graphql的新手,所以我真的不知道如何获取此数据。
预先感谢。
答案 0 :(得分:2)
此解析器...
memes:()=>fetch(`${VOLATILE_URL}`).then(res=>console.log(res.json())),
不返回任何内容(解析器应该)
如果您需要调试响应,请在最后致电
memes:()=>fetch(`${VOLATILE_URL}`).then(res=> {
let response = res.json();
console.log(response);
return response;
} ),