J'ai donc ce petit code ci-dessouses6 js promesses: À quoi correspond .catch (callback)?
router.param('username', function (req, res, next, username)
{
User.findOne({username: username}).then(function (user)
{
if (!user)
{
return res.sendStatus(404);
}
req.profile = user;
return next();
}).catch(next);
});
Mon problème est cette partie .catch(next)
Que faut-il faire concrètement? Va-t-il appeler le callback next()? Passera-t-il une erreur dans ce rappel, c'est-à-dire prochaine (erreur)? Ou l'appellera-t-il d'une manière différente comme next (null, error)? Je suis en train de convertir le code ci-dessus en async/await, le code ci-dessous fera-t-il exactement la même chose que le code ci-dessus?
router.param('username', async function (req, res, next, username)
{
try
{
let user = await User.findOne({username: username});
if (!user)
{
return res.sendStatus(404);
}
req.profile = user;
return next();
}
catch(error)
{
next(error);
}
});
Oui, votre conversion est exacte. 'next' sera appelé avec l'erreur comme seul argument. – Ryan
Génial. Merci de me l'avoir confirmé. Vous pouvez répondre à la question avec une référence et j'accepterais votre réponse –
pensez à '.catch (next);' comme '.catch (function (reason) {return next (raison);});' –