Как обновить строку в отношении один ко многим в Sequelize? - PullRequest
0 голосов
/ 14 января 2020

У меня есть пользовательская таблица, которая связана с таблицей привилегий в отношении один ко многим (у пользователя много привилегий), я хочу знать, как правильно и правильно обновить пользовательские привилегии.

Здесь код, который я написал, но я чувствую, что это не правильный способ сделать это:

update(req, res) {
  db.sequelize
    .transaction()
    .then(t => {
        Group.findByPk(req.params.id).then(group => {
          if (!group)
            return res.status(404).send({
              error: "Ce groupe n'éxiste pas"
            });

         GroupPrivilege.destroy({
           where: { groupId: req.params.id },
           transaction: t
         }).then(resDestroy => {
           req.body.group_privileges.forEach(element => {
           element.groupId = req.params.id;
         });

        GroupPrivilege.bulkCreate(req.body.group_privileges, {
          transaction: t
        }).then(resCreatePrivileges => {
          delete req.body.group_privileges;
          console.log(req.body);
          Group.update(req.body, {
            where: { id: req.params.id },
            transaction: t
          }).then(resSave => {
            t.commit();
            return res.status(200).send("");
          });
        });
      });
    });
  })
  .catch(err => {
    t.rollback();
    return res.status(400).send(err);
  });
}

1 Ответ

0 голосов
/ 15 января 2020

Вот код, который я написал, но я чувствую, что это не правильный способ сделать это:

 update(req, res) {
    db.sequelize
      .transaction()
      .then(t => {
        Group.findByPk(req.params.id).then(group => {
          if (!group)
            return res.status(404).send({
              error: "Ce groupe n'éxiste pas"
            });

          GroupPrivilege.destroy({
            where: { groupId: req.params.id },
            transaction: t
          }).then(resDestroy => {
            req.body.group_privileges.forEach(element => {
              element.groupId = req.params.id;
            });
            GroupPrivilege.bulkCreate(req.body.group_privileges, {
              transaction: t
            }).then(resCreatePrivileges => {
              delete req.body.group_privileges;
              console.log(req.body);
              Group.update(req.body, {
                where: { id: req.params.id },
                transaction: t
              }).then(resSave => {
                t.commit();
                return res.status(200).send("");
              });
            });
          });
        });
      })
      .catch(err => {
        t.rollback();
        return res.status(400).send(err);
      });
  }
...