异议js以增量+1更新

时间:2017-09-15 16:24:22

标签: javascript node.js orm objection.js

如何使用异议更新数据库中的值? 我的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}) 我怎么需要这样做?

2 个答案:

答案 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')