我目前正在使用Mongoose和Bluebird作爲Promise庫中的插件。 繼貓鼬的文檔,我也做了以下內容:Bluebird的Promise.map()在插入mongoose時不能與Mongoose配合使用.Promise
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
// Some function making use of Bluebird's Promise.map()
function someFn() {
return Promise.map([
someModel.findById(someId).exec(),
someOtherModel.findById(someOtherId).exec()
], mapperFn)
.then(function() {})
.catch(function() {});
}
正如你所看到的,我試圖用青鳥的Promise.map()
在我的代碼,但我不斷收到以下錯誤:
TypeError: Promise.map is not a function
然後我試圖通過要求藍鳥並將其設置爲一個新的var Promise
,這樣
var mongoose = require('mongoose');
var Promise = require('bluebird');
// Some function making use of Bluebird's Promise.map()
function someFn() {
return Promise.map([
someMode.findById(someId).exec(),
someOtherModel.findById(someOtherId).exec()
], mapperFn)
.then(function() {})
.catch(function() {});
}
這個工作,但似乎並沒有是正確的方法來解決這個問題。我不知道這是否會導致與貓鼬代碼中的其他變量發生任何衝突。
任何建議,使其工作?
讓我編輯它以顯示我正在做的更準確的圖片。 –
按照您的建議,將'mongoose.Promise'改爲'Promise',我就可以工作了。現在,我的問題是,這是否會將藍鳥應用於Mongoose的其他承諾?更好地說,這會覆蓋貓鼬的默認值嗎? –
根據貓鼬的文件,貓鼬使用Promises/A +標準的承諾。這意味着他們應該能夠與藍鳥進行互操作,藍鳥也實施了Promises/A +標準。 繼第二種方法後,您不會以任何方式改變貓鼬。 現在,強烈建議如果你想和藍鳥一起旅行,你還是要做'mongoose.Promise = require('bluebird')'步驟。 – arboreal84