Mongoose Populate由于Schema设计而返回null?

时间:2014-12-01 12:33:25

标签: node.js mongodb mongoose

我坚持使用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。

我怀疑我需要将货币作为独立架构才能实现。不仅仅是嵌入租户,但这意味着我会得到很多相互引用的架构。

您知道是否是这种情况,或者我的设置是否有效? 如果是这种情况,我想我只需要咬紧牙关,并且有许多集合相互引用?

感谢任何帮助或指导!

0 个答案:

没有答案