Функция Sequelize Query
var createComposant = function(composantInformation, res) {
logger.info("Received composantInformation");
console.log(composantInformation);
models.composant
.create(composantInformation)
.then(composantCree => {
// When a new composant is created, we need to insert a row for each produit, in table produit_composant, with the new produit
models.produit
.findAll({ attributes: ["id"] })
.then(produitsIdsFound => {
logger.info("produitsIdsFound", JSON.stringify(produitsIdsFound));
logger.info("produitsIdsFound[0][id]", produitsIdsFound[0]["id"]);
const produit_composant_data = [];
for (var i = 0; i < produitsIdsFound.length; i++) {
produit_composant_data.push({
produitId: produitsIdsFound[i]["id"],
composantId: composantCree.id,
qte: 0
});
}
logger.info(
"All produit_composant_data Before sending to database",
JSON.stringify(produit_composant_data)
);
models.produit_composant
.bulkCreate(produit_composant_data)
.then(function() {
// Notice: There are no arguments here, as of right now you'll have to...
return models.produit_composant.findAll();
})
.then(function(produit_composants) {
logger.info(
"produit_composants.dataValues retrieved from database",
JSON.stringify(produit_composants)
);
// ... in order to get the array of user objects
})
.catch(err => {
logger.error(err);
res.json({ error: err });
});
})
.catch(err => {
logger.error(err);
res.json({ error: err });
});
logger.debug(composantCree);
res.status(200).json(composantCree);
})
.catch(err => {
logger.error(err);
res.json({ error: err });
});
};
Имеет 3 вложенных перехвата :
.catch(err => { // First Catch
logger.error(err);
res.json({ error: err });
});
})
.catch(err => { // Second Catch
logger.error(err);
res.json({ error: err });
});
logger.debug(composantCree);
res.status(200).json(composantCree);
})
.catch(err => { // Third Catch
logger.error(err);
res.json({ error: err });
});
};
Так называется:
router.post("/createComposant", function(req, res) {
composantService.createComposant(req.body, res);
});
Моя проблема заключается в следующем:
Если первый запрос успешно выполнен:
models.composant
.create(composantInformation)
И в вложенный улов, например первый или второй, ответ, отправляемый клиенту, не является сообщением об ошибке в этих уловах, но является ответом об успехе. Правильное поведение - отправить ошибку.
Странно то, что ошибка регистрируется, но ответ не отправляется. Таким образом, код внутри этих вложенных уловов выполняется. Что я делаю не так?