使用sequelize事务插入2个表,user和job,每个用户有一个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
。
答案 0 :(得分: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);
});
祝你好运:)