使用graphql从数据库中获取数据

时间:2020-04-13 20:58:19

标签: graphql graphql-js

我已经使用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的新手,所以我真的不知道如何获取此数据。 预先感谢。

1 个答案:

答案 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;
} ),