Node的Express,在一个集合上运行一个Model方法

所以我有一个简单的查询:

var query = postModel.find({ //etc }); query.exec(function(err, posts) { }); 

然后我有一个模型的方法:

 PostSchema.method('deepPopulate', function(cb) { //stuff }); 

在我的其他发现,我可以做这样的东西:

 post.deepPopulate(function(err, post) {}); 

对于findOne()可以正常工作,但是如何在find()的结果中对post集合运行相同的Model函数?

我会使用asynchronous库的映射方法。 承诺也可能是可能的。

 async.map(posts, function (post, done) { post.deepPopulate(done); }, function (err, posts) { // ... do yaw thang }); 

假设您没有对您的查询使用lean属性,则每个结果都应该是deepPopulate()方法的模型对象:

 var query = postModel.find({ //etc }); query.exec(function(err, posts) { for each ( var post in posts ) { post.deepPopulate(); //Or however you use this guy. } });