【发布时间】:2015-09-01 21:50:35
【问题描述】:
我在 sqlite 数据库中有一张表,里面有一堆记录。我想用某些值更新某些记录的特定列。
例如,如果我有一个名为“priority”的列,并且用户更新 ID 为 1,2 和 3 且值为 10,11 和 12 的记录的“priority”。然后我想更新这些记录的相应优先级使用新值。
我一直在查看docs,但还没有找到使用事务进行批量更新的方法。他们说交易会返回一个承诺。
在我的特定用例中:
return sequelize.transaction(function (t) {
// chain all your queries here. make sure you return them.
return User.findbyId(1, {transaction: t}).then(function (user) {
return user.updateAttributes({
priority: 10
}, {transaction: t});
});
}).then(function (result) {
// Transaction has been committed
// result is whatever the result of the promise chain returned to the transaction callback
}).catch(function (err) {
// Transaction has been rolled back
// err is whatever rejected the promise chain returned to the transaction callback
});
但是,我想对我提到的一堆行进行查找和更新。我必须在 for 循环中做吗?由于事物的异步性,promise 实现如何处理 for 循环?我想使用事务,因为如果任何更新失败,承诺将不会解决,提交也不会发生。因此,只有在所有更新都成功完成后才会提交。
感谢任何帮助。
【问题讨论】:
标签: node.js sqlite transactions sequelize.js