web-dev-qa-db-fra.com

Où gérer l'erreur dans une instruction de requête ORM séquentielle?

J'utilise Sequelize ORM dans Node/Express.

J'ai deux tableaux, utilisateur et article. L'élément a une clé étrangère liée à UserId.

Lorsque j'essaie de créer un élément avec un ID utilisateur qui n'est pas valide (non présent dans le tableau des utilisateurs), une "SequelizeForeignKeyConstraintError" est levée et entraîne le blocage de l'application en raison de la non-gestion.

Le problème que j'ai est le suivant:

Où puis-je gérer l'erreur?

Voici mon code.

.post(function(req,res){
        models.Item.create({
            title : req.body.title,
            UserId : req.body.UserId
        }).then(function(item){
            res.json({
                "Message" : "Created item.",
                "Item" : item
            });
        });
    });
24
Josh Hale

Si vous souhaitez gérer l'erreur spécifique, joignez un .catch gestionnaire

models.Item.create({
  title : req.body.title,
  UserId : req.body.UserId
}).then(function(item){
  res.json({
    "Message" : "Created item.",
    "Item" : item
  });
}).catch(function (err) {
  // handle error;
});

Si vous souhaitez gérer les erreurs de manière plus générale (c'est-à-dire afficher un message d'erreur Nice, au lieu de tuer votre serveur, vous voudrez peut-être jeter un œil à l'exception non gérée

https://nodejs.org/api/process.html#process_event_uncaughtexception

Si vous utilisez express, il contient également des fonctionnalités de gestion des erreurs http://expressjs.com/en/guide/error-handling.html

29
Jan Aagaard Meier