如何使用异议更新数据库中的值? 我的SQL查询非常完美。
UPDATE "freePlace"
SET number = number-1
WHERE date >= '2017-10-20' AND date <= '2017-10-30' AND "idObject" = '1'
我的异议代码:
FreePlace.query().patch({number:number+1}).where('date', '>=', startDate)
.andWhere('date', '<=', endDate)
.andWhere('idParking', '=', parkingId)
问题在于补丁({number:number + 1}) 我怎么需要这样做?
答案 0 :(得分:3)
看起来你需要使用ref()。您拥有的代码将不知道从哪里获取“number + 1”的值。
这个怎么样?
FreePlace.query().patch({number:ref('number')+1})
.where('date', '>=', startDate)
.andWhere('date', '<=', endDate)
.andWhere('idParking', '=', parkingId)
请参阅objection.js文档中的此示例:
Person
.query()
.patch({
age: Person.query().avg('age'),
firstName: Person.raw("'Jenni' || 'fer'"),
oldLastName: ref('lastName')
});
答案 1 :(得分:2)
您可以使用increment
/ decrement
方法:
FreePlace.query()
.increment('number', 1)
.where('date', '>=', startDate)
.andWhere('date', '<=', endDate)
.andWhere('idParking', '=', parkingId)
如果您需要在同一查询中更新其他内容,则可以使用raw
FreePlace.query()
.patch({
number: raw('number + 1'),
somethingElse: 42
})
.where('date', '>=', startDate)
.andWhere('date', '<=', endDate)
.andWhere('idParking', '=', parkingId)
raw
来自const { raw } = require('objection')