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

时间:2013-09-24 20:41:35

标签: node.js express mongoose

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

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

});

然后我有一个模型方法:

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

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

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

哪个适用于findOne(),但如何在find()的结果中对帖子集合运行相同的模型函数?

2 个答案:

答案 0 :(得分:2)

我使用async库的map方法。这也许是承诺的承诺。

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

答案 1 :(得分:0)

假设您没有在查询中使用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.
  }
});