我对学习GraphQL很感兴趣,因此我可以构建真正的fullstack应用程序。
我正在尝试在schema中的resolve函数中查询我的mongodb。我收到了错误:
" message":" mongodb.getCollection不是函数"
这非常简单,我的mongodb参数没有getCollection函数,问题是我不知道为什么。我使用的是mongodb,graphqlhttp,express-graphql。
这是我的代码:
在我的 index.js 文件中:
const graphql = express();<br/>
graphql.use('/', graphQLHTTP(async () => ({<br/>
graphiql: true,<br/>
pretty: true,<br/>
schema,<br/>
context: {<br/>
mongodb: await mongodb<br/>
}<br/>
})));
在我的架构文件中,这是我的解决方案片段:
resolve: async(source, { category }, { mongodb }) => {<br/>
return await {<br/>
stories: mongodb.getCollection('stories').find({})<br/>
};<br/>
}
我现在完全陷入困境,你们知道我的代码出了什么问题吗?
答案 0 :(得分:0)
尝试使用:
resolve: (obj, args, ctx) => {
return mongodb.getCollection('stories').find({})
}
不用说 - 数据库的结果应与GraphQLObject类型相匹配,如:
new GraphQLList(storyType)
答案 1 :(得分:0)
首先,当您使用.find({})
函数时,它通常被接受使用GraphQLList,因为它从数据库中获取所有内容,我建议您使用控制台。 log(); 更频繁。
根据我自己对graphQL的了解,resolve函数接受两个参数,父数据和你的args。
查看本教程link以更好地了解如何使用GQL查询mongodb。