Bookshelf一步查询和更新值

时间:2017-05-23 22:07:30

标签: node.js orm bookshelf.js

我使用Bookshelf JS作为我的ORM。我想查询一个特殊实体并将其更新为一个查询(就像我执行INSERT INTO ... WHERE ...)

如果没有原始查询,我怎么能这样做?

我现在就是这样做的:

async function updateSetting() { 
  let userSetting = await Setting.where({user: 1, key: 'foo'}).fetch()
  await userSetting.save({value: {confirmed: true, order: 66}})
}

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

async function updateSetting() {
    let userSetting = await Setting
        .where({user: 1, key: 'foo'})
        .save(
            {value: {confirmed: true, order: 66}},
            {method: 'update', patch: true}
        )
}

答案 1 :(得分:1)

要在不执行fetch()的情况下更新模型,您需要拥有模型id_Attribute(通常只是id)或使用where()子句(正如@websoftwares所述)

有点像:

new Setting({ id: 99 })
  .save({ value: { confirmed: true, order: 66} },
        { patch: true })

请注意,在这种情况下,您无需指定method,因为id的存在意味着您正在更新现有行。