我坚持使用mongoose populate返回null。我和另一个question的情况非常相似,我们似乎工作得很好,也许有一个重要的区别: 我引用的模型仅作为另一个模型的子文档存在。
示例:
// The model i want to populate
Currency = new Schema({
code: String,
rate: Number
});
// The set of currencies are defined for each Tenant
// A currency belongs to one tenant, one tenant can have multiple currencies
Tenant = new Schema({
name: String,
currencies: [Currency]
});
Product = new Schema({
Name: String,
_currency: {type: ObjectId, ref: 'Currency'},
});
Customer = new Schema({
tenant: {type: ObjectId, ref: 'Tenant'},
products: [ Product ]
});
然后我导出模型并在我的一条路线中使用它们,我想做的就是
CustomerModel.find({}).populate('products._currency').exec(function(err, docs){
// docs[0].products[0]._currency is null (but has ObjectId if not usinn populate)
})
对于任何给定的product._currency返回null,但如果我不填充,我会得到正确的ObjectId ref,它对应于嵌入租户的货币的objectId。
我怀疑我需要将货币作为独立架构才能实现。不仅仅是嵌入租户,但这意味着我会得到很多相互引用的架构。
您知道是否是这种情况,或者我的设置是否有效? 如果是这种情况,我想我只需要咬紧牙关,并且有许多集合相互引用?
感谢任何帮助或指导!