Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js GraphQL通过将数据库作为解析参数之一传递来查询数据库_Node.js_Mongodb_Express_Graphql - Fatal编程技术网

Node.js GraphQL通过将数据库作为解析参数之一传递来查询数据库

Node.js GraphQL通过将数据库作为解析参数之一传递来查询数据库,node.js,mongodb,express,graphql,Node.js,Mongodb,Express,Graphql,我对学习GraphQL感兴趣,这样我就可以构建真正的fullstack应用程序 我试图在模式内的解析函数中查询mongodb。我得到一个错误: “消息”:“mongodb.getCollection不是函数” 这很简单,我的mongodb参数没有getCollection函数,问题是我不知道为什么。我正在使用mongodb、graphqlhttp、expressgraphql 这是我的密码: 在我的index.js文件中: const graphql = express(); graphql

我对学习GraphQL感兴趣,这样我就可以构建真正的fullstack应用程序

我试图在模式内的解析函数中查询mongodb。我得到一个错误:

“消息”:“mongodb.getCollection不是函数”

这很简单,我的mongodb参数没有getCollection函数,问题是我不知道为什么。我正在使用mongodb、graphqlhttp、expressgraphql

这是我的密码:

在我的index.js文件中:

const graphql = express();
  graphql.use('/', graphQLHTTP(async () => ({
    graphiql: true,
    pretty: true,
    schema,
    context: {
      mongodb: await mongodb
    }
})));
在我的模式文件中,这是我的解析代码段:

resolve: async(source, { category }, { mongodb }) => {
  return await 
    stories: mongodb.getCollection('stories').find({})
  };
}
我现在完全被卡住了,你们知道我的代码出了什么问题吗?

试着使用:

  resolve: (obj, args, ctx) => {
    return mongodb.getCollection('stories').find({})
  }
不用说-DB的结果应该与GraphQLObject类型匹配,类似于:

new GraphQLList(storyType)

首先,当您使用
.find({})
函数时,通常会使用前面提到的GraphQList,因为它从数据库获取所有内容,我建议您使用console.log()更频繁。 根据我对graphQL的了解,resolve函数接受两个参数,父数据和您的参数。
查看本教程可以更好地了解如何使用GQL查询mongodb

这对我不起作用,我仍在努力找出可能的错误。我觉得问题在于您在上下文中设置
mongodb
的方式。为什么在mongodb之前需要等待?另外,如果您可以在上下文中设置之前共享初始化
mongodb
的代码,那就太好了。