私のコントローラーでは、結果を得るか、呼び出された関数からエラーをキャッチすることを期待して、別の関数を呼び出すエンドポイント関数があります。呼び出された関数generateInvites
でnode.js - mongooseコールバックでスローされたcatchエラー
exports.createInvites = (req, res) => {
// code...
try {
generateInvitations(requirements, data => {
res.status(200).json({data});
});
} catch (err) {
console.log(`caught the error: ${err}`);
return res.status(500).json(err);
}
}
、私はマングースを使ってMongoDBのために生成されたオブジェクトを保存し、そして1がある場合は、エラーをスローします。上記のコード
function generateInvitations(requirements, cb) {
const { expirationDate, credits, numOfUse, numOfInvites } = requirements;
let invitationCodes = [];
for (let i = 0; i < numOfInvites; i++) {
const code = randomString(CODE_LENGTH);
invitationCodes.push(code);
const invitation = new Invitation({
// code,
numOfUse,
expirationDate,
credits
});
invitation.save((err, obj) => {
if (err) {
throw err; // it should throw a ValidationError here
}
});
}
cb(invitationCodes);
}
generateInvites
でスローされたエラーを処理する私の試みです。もちろん、私はどんなエラーも捕まえることができませんでした。私は何を間違えたのですか?代わりに私は何をすべきですか?
お約束になっているはずです。非同期のエラー処理はコールバックでは醜いです。約束して文明化しました – thedarklord47