我必须根据查询请求决定是否填充,但我不知道如何做到。
因此示例
如果我的模型用户看起来像这个
以下语法来自typegoose和typegraphql
class User {
@Field()
@prop()
name: string;
@Field()
@prop(ref:"House")
house: Ref<House>
}
这里有两个不同的查询
Query1
user {
name
}
Query2
user {
name
house {
location
}
}
在解析器中
User: () => {
const user = UserModel.find(blahblah)**.populate("house")**
return user
}
Query1不需要填充
,但Query2需要
在同一解析程序中!
我想根据查询的要求决定是否填充
如果不知道解析器中的实际查询是什么,我就无法决定是否填充。
我在stackoverflow中发现了非常相似的问题但没有合适的答案。。。解决Mongoose和GraphQL中的关系
我对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(另一个解析器?(中有一些更好的方法可以做到这一点