在我的控制器中,我有一個終點函數調用另一個函數,期望從被調用的函數獲得結果或捕獲錯誤。node.js - 捕獲錯誤拋出一個貓鼬回調
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);
}
}
在所調用的函數generateInvites
,我保存生成的對象使用貓鼬到MongoDB的,並且如果存在一個引發錯誤。
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