【问题标题】:Mongodb Ref dynamic populate with grapqhl?Mongodb Ref动态填充graphql?
【发布时间】:2021-03-30 07:27:04
【问题描述】:

我必须根据查询请求来决定是否填充,但我不知道该怎么做。

例子

如果我的模型用户是这样的

以下语法来自 typegoose 和 typegraphql

class User {
    @Field()
    @prop()
    name: string;

    @Field()
    @prop(ref:"House")
    house: Ref<House>
}

这里有两个不同的查询

查询1

  user {
    name
  } 

查询2

  user {
    name
    house {
      location
    }
  } 

在解析器中

User: () => {
   const user = UserModel.find(blahblah)**.populate("house")**

   return user
}

Query1 不需要填充
但 Query2 需要
在同一个解析器中!

我想根据查询的要求来决定是否填充。
在不知道解析器中的实际查询是什么的情况下,我无法决定是否填充。

我在 stackoverflow 中发现了非常相似的问题 但是没有正确的答案... Solving relationships in Mongoose and GraphQL

【问题讨论】:

  • 不,它不是同一个解析器......优化时可能是......遵循一些[更好]教程

标签: mongodb graphql typegraphql typegoose


【解决方案1】:

我对graphql不太了解,但我认为如果请求该路径,有一些方法可以获取,所以以下应该可行:

let query = Model.find(basicQuery);
if (req.path) { // replace this with graphql's method to get if the path is requested
  query = query.populate(yourPath);
}

const doc = await query.exec();

PS:但正如评论已经指出的那样,我认为在 graphql(另一个解析器?)中有一些更好的方法来做到这一点

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 2020-08-18
    • 2022-01-21
    • 1970-01-01
    • 2011-01-23
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多