2016-09-10 2 views
1

Для пакета библиотеки NPM Bluebird Promise существует два способа реализовать обещания Mongoose. В чем разница между этими двумя?Какая разница между mongoose.Promise и promisifyAll?

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

против:

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

ответ

1

promisifyAll преобразует Mongoose в обратного вызова апи к обещаниям автоматически в Bluebird определенным образом. Он работает для каждой библиотеки, которая возвращает стандартные обратные вызовы и использует объекты (а не только mongoose) и написана bluebird.

mongoose.Promise является стандартным способом использования обещаний Mongoose, он был добавлен в более поздней версии и является специфическим для мангуста. Это также немного медленнее hah!, чем оболочка bluebird из-за того, что promisifyAll не должен использовать конструктор обещаний, потому что это синяя птица (где .Promise работает с любой реализацией обещаний).

В большинстве сценариев, оба должны быть в порядке с .Promise = bluebird, имея то преимущество, что не нужно добавлять суффикс Async к именам функций.

Смежные вопросы