我需要将子文档填充到实例方法中,并且在测试不同模式之后我使用回调函数。但是我想知道如何在这种情况下使用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。
答案 0 :(得分:1)
在没有回调的模型实例execPopulate
调用上调用populate
来执行填充并返回一个承诺。
MyModel.methods.myMethod = function () {
return this.populate({ model: 'User', path: 'rank.user'})
.execPopulate()
.then(function() {
// ...
});
};