Возражение js обновляется с шагом +1
Как я могу обновить значение в базе данных, используя возражения? Мой 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)
Проблема в патче ({номер: номер +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')
Похоже, вам нужно использовать ref(). Код, который у вас есть, не будет знать, где взять значение "число +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')
});