【问题标题】:sequelize transaction cannot insert because of foreign key?sequelize 事务由于外键而无法插入?
【发布时间】:2017-08-10 22:30:02
【问题描述】:

使用sequelize事务插入user和job 2个表,每个用户有一个job,userId是job表的外键:

sequelize.transaction(function(t) {
                 return models.users.create({
                    userType: 'test',
                    username: 'alvin',
                }, {transaction: t}).then(function(user) {
                    return models.job.create({
                        jobType: 'jocker',
                        userId: user.userId // Take away this will work, it is a foreign key
                    });
                }, {transaction: t});
            }).then(function(result) {
                resolve(result);
            }).catch(function(err) {
                reject(err);
            });

为什么?从日志中我可以看到 2 sql insert 语句,但它没有运行commit

【问题讨论】:

    标签: nodes sequelize.js


    【解决方案1】:

    您需要在同一事务中创建作业。看起来你只是把创造就业机会的交易放在了错误的地方。像我在下面那样移动它应该可以解决您的问题。

    sequelize
      .transaction(function(t) {
        return models.users
          .create(
            {
              userType: 'test',
              username: 'alvin'
            },
            { transaction: t }
          )
          .then(function(user) {
            return models.job.create(
              {
                jobType: 'jocker',
                userId: user.userId
              },
              {
                transaction: t // <-- Second argument to .create
              }
            );
          });
      })
      .then(function(result) {
        resolve(result);
      })
      .catch(function(err) {
        reject(err);
      });
    

    祝你好运:)

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2012-08-28
      • 2015-02-09
      • 1970-01-01
      • 2011-02-01
      相关资源
      最近更新 更多