使用promises将子文档填充到实例方法中

时间:2015-08-03 22:04:02

标签: mongoose

我需要将子文档填充到实例方法中,并且在测试不同模式之后我使用回调函数。但是我想知道如何在这种情况下使用promises,如果有理由我们不能(也许我不应该满足这种需要)。

populate()方法返回原始文档(包含任何更改)......

这就是我想要做的事情:

MyModel.methods.myMethod = function () {
    return this.populate({ model: 'User', path: 'rank.user'})
      .then(function() { // TypeError: promise.then is not a function
        // Expected to be able to do things here...
      });   
};

这有效:

MyModel.methods.myMethod = function () {
    return this.populate({ model: 'User', path: 'rank.user'}, function(err, populatedDucument) {
       // Works fine...
     });    
};

知道如何在这里填写承诺吗? 我顺便使用v4.1.0。

1 个答案:

答案 0 :(得分:1)

在没有回调的模型实例execPopulate调用上调用populate来执行填充并返回一个承诺。

MyModel.methods.myMethod = function () {
    return this.populate({ model: 'User', path: 'rank.user'})
      .execPopulate()
      .then(function() {
        // ...
      });   
};