如何使用transacting t,我想确保在保存记录之前删除该行:
var Roles = bookshelf.Collection.extend({
model: Role
);
Role.where('name', '=', 'Staff').destroy();
var roles = Roles.forge([{name: 'Staff'}, {name: 'Guest'}]);
Promise.all(roles.invoke('save')).then(function(role) {
resolve(role);
}).catch(function (err) {
reject({"status":"error", "data": err});
});
答案 0 :(得分:3)
您可以使用Bookshelf的transaction()
方法。
但首先你的save()
必须在destroy()
承诺的上下文中,因此要确保正确的顺序,否则你可能会被破坏删除你保存的数据。
所以它可能看起来像:
var Roles = bookshelf.Collection.extend({
model: Role
});
bookshelf.transaction(function(t) {
return Role
.where('name', '=', 'Staff')
.destroy({transacting: t})
.then(function() {
var roles = Roles.forge([{name: 'Staff'}, {name: 'Guest'}]);
return roles
.invokeThen('save', null, {transacting: t});
});
});