是否可以递归使用MongooseJS'查询#populate方法?

时间:2012-09-24 17:52:28

标签: node.js mongodb mongoose

假设我们有一个模式A,它看起来像:

{ b: { type: Schema.Types.ObjectId, ref: 'B' }

类型B看起来像:

{ c: { type: Schema.Types.ObjectId, ref: 'C' }

和类型C看起来像:

{ name: String }

有没有办法使用MongooseJS的populate实用程序来获取多个引用的文档?在这个例子中,我们可以通过

找到A的b
A.findOne({ id: someId })
    .populate('b')
    ...

但我们可以通过A获得b的c吗?

2 个答案:

答案 0 :(得分:3)

目前不是。对此的一些支持即将到来。

答案 1 :(得分:0)

我认为事情已经改变了两年。以下Model.populate()使用:

A.findOne({id: someId})
 .populate('b')
 .exec()
 .then(function(data) {
         // returns a promise about populating a.b.c:
         return C.populate(data, {path: 'b.c'});
     });

详细信息可以在3.6'发行说明中找到: https://github.com/LearnBoost/mongoose/wiki/3.6-Release-Notes#added-modelpopulatedocs-opts-cb