mongoose.Promise和promisifyAll有什么区别?

对于NPM Bluebird Promise库包,实现Mongoose承诺有两种方式。 这两者有什么不同?

let bluebird = require('bluebird'); let mongoose = require('mongoose'); bluebird.promisifyAll(mongoose); 

与:

 let bluebird = require('bluebird'); let mongoose = require('mongoose'); mongoose.Promise = bluebird; 

promisifyAll转换mongoose的callback API自动承诺蓝鸟具体的方式。 它适用于每个返回标准callback并使用对象(而不仅仅是mongoose)并由蓝鸟写的库。

mongoose.Promise是标准的Mongoose使用承诺的方式,它在后来的版本中join并且是mongoose特定的。 它也稍微慢一些 比蓝鸟包装,因为如何promisifyAll不必使用承诺的构造函数,因为它是特定于蓝鸟(其中.Promise适用于任何承诺的实现)。

在大多数情况下,两者都应该.Promise = bluebird的优点是不必将Async后缀追加到函数名称。