来自此文档:http://mongoosejs.com/docs/promises.html#queries-are-not-promises
Model.update()
的返回值为Query
。但是它具有.then()
函数,所以我困惑是否可以将Query
与Promise.all()
一起使用?
这是我的代码:
it('should be ok when use promise.all with mongoose queries', () => {
return Book.findOne().then(book => {
if (book) {
const ops = [];
expect(book._id.toString()).to.be.a('string');
const count = 100;
for (let i = 0; i < count; i += 1) {
const op = Book.update({ _id: book._id }, { $set: { bookNew: true } });
ops.push(op);
}
return Promise.all(ops).then(results => {
expect(results).to.be.an('array');
expect(results).to.have.lengthOf(count);
});
}
});
});
此单元测试通过。但是我不知道这个单元测试是否正确。
我应该改用Model.update().exec()
吗?因为Model.update().exec()
的返回值是一个真实的promise
实例。