Ich habe den folgenden Code in meinem Node.js express App:Proper Fehlerbehandlung mit Asynchron/erwarten in Node.js
router.route('/user')
.post(async function(req, res) {
if(req.body.password === req.body.passwordConfirm) {
try {
var response = await userManager.addUser(req.body);
res.status(201).send();
} catch(err) {
logger.error('POST /user failed with error: '+err);
res.status(500).send({err:"something went wrong.."});
}
} else {
res.status(400).send({err:'passwords do not match'});
}
})
und usermanager:
var userManager = function() {
this.addUser = async function(userobject) {
userobject.password_hash = await genHash(userobject.password_hash);
var user = new User(userobject);
return await user.save();
};
};
module.exports = userManager;
Meine Frage ist: Wird die versuch catch block in der route catch alle fehler geworfen in addUser oder wird es nur diejenigen fangen, die von user.save() geworfen werden, da das ist das, das zurückgegeben wird?
'addUser' ist eine' async-Funktion' und daher * wird niemals eine Ausnahme ausgelöst *. Es wird nur ein Versprechen zurückgeben, das abgelehnt werden könnte. – Bergi
Nur wenn Sie 'Ihren' addUser' Anruf erwarten ... – James
Ah, schöner Fang, ich habe vergessen, es dort hinzuzufügen! –