約束どおりに変換する他の方法はありますか?青写真の約束関数は約束に変換されていない
var Promise = require("bluebird");
let findOneOrCreate = require('mongoose-find-one-or-create');
findOneOrCreate = Promise.promisify(findOneOrCreate); // not converted to promise
は私が)(.thenで、その後同じように使用: -
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