【问题标题】:Objection js update with increments +1反对 js 以增量 +1 更新
【发布时间】:2017-09-15 16:24:21
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js orm objection.js


    【解决方案1】:

    您可以使用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')

    【讨论】:

      【解决方案2】:

      看起来你需要使用 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')
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 2017-11-26
        • 1970-01-01
        相关资源
        最近更新 更多