如果我从graphql解析器返回查询,如下所示:
someResolver = () => SomeModel.find()
它可以正常工作并响应数据库结果。
这是怎么回事?为什么我不必为此打.exec()
?
答案 0 :(得分:0)
尽管Model.find()
返回Query
,但是它是PromiseLike
类型。
以下是文档:http://mongoosejs.com/docs/promises.html#built-in-promises
然后,在graphql
resolver
中,您可以返回promise
或使用async/await
或仅返回一个常数值
https://graphql.org/learn/execution/#asynchronous-resolvers
在执行过程中,GraphQL将等待Promises,Future和Tasks完成之后再继续操作,并且会以最佳的并发性进行操作。
Model.find().exec()
返回一个完整的承诺,它也很好用。