0

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

所以例子

如果我的模型用户看起来像这样

以下语法来自 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 中发现了非常相似的问题但是没有正确的答案... 解决 Mongoose 和 GraphQL 中的关系

4

1 回答 1

-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(另一个解析器?)中有一些更好的方法可以做到这一点

于 2020-12-20T13:27:17.137 回答