如何仅通过 mongoose 传递我在 GraphQL 中需要的数据

Posted

技术标签:

【中文标题】如何仅通过 mongoose 传递我在 GraphQL 中需要的数据【英文标题】:How to pass through mongoose only the data I need in GraphQL 【发布时间】:2020-08-04 21:07:30 【问题描述】:

通过 GraphQL,graphql 客户端可以只过滤他需要的数据。

然而,相比之下,在我使用 mongoose 的实现中,所有数据都是从数据库请求的,没有应用投影,因此会花费不必要的处理和带宽。

  Query: 
    getCustomers: async (parent, args,  models , info) => 
      const Users = await models.User.find()
      return Users
    ,
  ,

如何将 mongoose 投影与 GraphQL 结合使用,仅请求数据库,仅请求我需要的数据?

【问题讨论】:

【参考方案1】:

请参阅doc。将投影参数传递给查找方法

    // 1 to include and 0 to exclude
    // Not necessary to explicitly specify _id: 1 to return the _id field. As defult it is included 
    models.User.find(,user.propertyname:1, user.propertyname:1,.. ...)

【讨论】:

对不起,我不明白。我知道投影是如何工作的,但我不明白如何在没有大量 IF 的情况下使用 info 变量中包含的数据自动传递 graphql 客户端请求的参数。 您必须根据请求的字段动态构建投影。

以上是关于如何仅通过 mongoose 传递我在 GraphQL 中需要的数据的主要内容,如果未能解决你的问题,请参考以下文章

在Graph中找到仅通过小于或等于一次的特定边的最短路径

仅选择 Json 文档中带有 mongoose 的值

node js中的异步编程通过mongoose模型传递常量/预定义的强制值

Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?

如何通过 Restful 对 Mongoose 请求进行用户验证

是否可以通过请求标头传递 Facebook Graph API 访问令牌?