我有一个文档,其中包含此模式中的uid和角色对数组。
TestSchema = new mongoose.Schema({
users: {
type: [
{
uid: { type: String },
role: { type: Number }
}
]
}
});
对于架构,我现在想指定一个虚拟属性owner
,该属性填充了另一个集合中的文档。我想用一个具有与从users
到role: 1
的数组元素的uid相同的uid的文档来填充它(总是有一个role: 1
的数组元素)。将localField
本身设置为虚拟属性,并尝试通过这样的属性getter函数进行计算
XSchema.virtual("owner", {
ref: "User",
localField: "owner", // ???
foreignField: "uid",
justOne: true
}).get(function() {
return this.user.find(user => {
return user.role ===1;
});
});
然后打电话给
X.find().populate("owner");
不起作用,因为在填充之前未应用getter函数。
如何在此处将来自文档的计算值用作localField
值?
除了多次查询,我还有什么其他选择?