是他们在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