Sequelize: вложенные уловы с http res - PullRequest
0 голосов
/ 19 марта 2020

Функция 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)  

И в вложенный улов, например первый или второй, ответ, отправляемый клиенту, не является сообщением об ошибке в этих уловах, но является ответом об успехе. Правильное поведение - отправить ошибку.
Странно то, что ошибка регистрируется, но ответ не отправляется. Таким образом, код внутри этих вложенных уловов выполняется. Что я делаю не так?

...