如何使用 Bookshelf.js 模型进行原子更新?
How do I do atomic update using Bookshelf.js model?
例如,如果我想在 MySQL 查询中执行如下操作:
update foo set bar = bar + ?;
我如何使用 Bookshelf.js 模型实现此目的?
我不太确定你所说的原子,也许是事务是什么意思?你可以在书架上这样做,有一整节关于它:http://bookshelfjs.org/#Bookshelf-transaction
但是,如果您只是想更新一个字段,您可以按如下方式轻松完成:
var idStationIWantToUpdate = 1;
new Station({'id': idStationIWantToUpdate}).save({
route_name: 'my updated route name'
}).then(function(station) {
res.json(station.toJSON());
});
重要的是你用相应的ID实例化一个模型,然后当你调用save
时,它会自动更新现有的记录。
我无法让它按预期工作,但是 knex 查询生成器库 (http://knexjs.org/#Builder-increment) 中有一个 increment
方法,它是 bookshelf.js
我最后做的是:
foo.forge().save({bar:bookshelf.knex.raw('bar + 1')},{method:"update"});
例如,如果我想在 MySQL 查询中执行如下操作:
update foo set bar = bar + ?;
我如何使用 Bookshelf.js 模型实现此目的?
我不太确定你所说的原子,也许是事务是什么意思?你可以在书架上这样做,有一整节关于它:http://bookshelfjs.org/#Bookshelf-transaction
但是,如果您只是想更新一个字段,您可以按如下方式轻松完成:
var idStationIWantToUpdate = 1;
new Station({'id': idStationIWantToUpdate}).save({
route_name: 'my updated route name'
}).then(function(station) {
res.json(station.toJSON());
});
重要的是你用相应的ID实例化一个模型,然后当你调用save
时,它会自动更新现有的记录。
我无法让它按预期工作,但是 knex 查询生成器库 (http://knexjs.org/#Builder-increment) 中有一个 increment
方法,它是 bookshelf.js
我最后做的是:
foo.forge().save({bar:bookshelf.knex.raw('bar + 1')},{method:"update"});