是他們在promise中轉換的其他方式嗎?bluebired promisify函數沒有轉換爲承諾
var Promise = require("bluebird");
let findOneOrCreate = require('mongoose-find-one-or-create');
findOneOrCreate = Promise.promisify(findOneOrCreate); // not converted to promise
我用像當年在。那麼(): -
db.employee.findOneOrCreate({
organization: model.organization.id,
EmpDb_Emp_id: model.EmpDb_Emp_id
}, model)
.then((employee, created) => {
if (!created) {
throw 'employee already exist';
}
return employee;
}).catch(err => {
throw err;
});
它給出了一個錯誤: -
無法讀取的不確定
'它給出一個錯誤' - 什麼?你發佈的代碼? (不太可能,你不使用'.then') - 你確定你知道你在做什麼嗎? –
'promisify'不返回承諾 - 它返回一個*函數*,當被調用時返回一個承諾。你在哪裏打電話? – Bergi
'mongoose-find-one-or-create'模塊存在缺陷(比賽條件),您應該考慮使用內置的['findOneAndUpdate'](http://mongoosejs.com/docs/api.html#query_Query -findOneAndUpdate)與'upsert:true'相結合。這也意味着你不必提出任何提議,因爲Mongoose支持[開箱即用]承諾(http://mongoosejs.com/docs/promises.html)。 – robertklep