【问题标题】:is graphql executing mongoose queries automatically?graphql 是否自动执行猫鼬查询?
【发布时间】:2019-01-17 16:57:34
【问题描述】:

如果我像这样从 graphql 解析器返回查询:

someResolver = () => SomeModel.find()

它只是工作并以数据库结果响应。

这是怎么回事?例如,为什么我不必打电话给.exec()?

【问题讨论】:

    标签: node.js mongodb mongoose graphql


    【解决方案1】:

    虽然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、Futures 和 Tasks 完成后再继续,并且会以最佳并发性完成。

    Model.find().exec() 返回一个成熟的承诺,它也可以正常工作。

    【讨论】:

    • 太棒了。谢谢!但是有一些推荐的方法吗?例如选择 .exec() 而不是常量值或 .find() 或者没关系?它会对性能或任何东西产生任何影响吗?
    • 我想如果它有性能问题。这是关于.find() 和.exec() 以及解析器执行时间的mongoose 问题。那是另一个问题。你可以看看github.com/facebook/dataloader
    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2015-04-10
    • 2022-12-05
    • 2018-10-14
    • 2018-06-15
    • 2020-09-14
    相关资源
    最近更新 更多