2017-08-10 80 views
0

使用sequelize交易插入到2个表,用户名和作业,每个用户都有一个任务,用户id是在工作表的外键:由于外键导致sequelize事务无法插入?

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插入语句,但它不运行commit

回答

0

您需要在同一个事务中创建作业。看起来你只是把创造就业的交易放在了错误的位置上。如下所示移动它应该解决您的问题。

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); 
    }); 

祝你好运:)