In meinem Controller habe ich eine Endpunktfunktion, die eine andere Funktion aufruft, in der Erwartung, ein Ergebnis zu erhalten oder Fehler von der aufgerufenen Funktion zu fangen.node.js - catch Fehler in einem Mungo-Rückruf
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);
}
}
In der aufgerufenen Funktion generateInvites
, I Objekt speichern erzeugt MongoDB Mungo verwenden und einen Fehler aus, wenn es einen gibt.
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);
}
Above Code ist mein Versuch, Fehler in generateInvites
geworfen zu behandeln. Natürlich konnte ich keinen Fehler feststellen. Was habe ich falsch gemacht? und was soll ich stattdessen tun?
Sie in Versprechen aussehen sollte. Die asynchrone Fehlerbehandlung ist bei Callbacks hässlich. Versprechungen machen es viel mehr .. zivilisiert – thedarklord47