如何在不修改任何属性的情况下更新续集模型的字段 'updated_at'

how to update the field 'updated_at' of a sequelize model without modifiyng any attributes

我在 PostgreSQL 中使用 sequelize 2.0.0。 我想知道是否可以用一种方法更新模型的字段 'updated_at'。如果是,我该如何实现?

例如,在其他框架中,例如 Laravel,您有 model.touch() 来自动更新模型的 'updated_at'。

我已经尝试过使用 model.save() 但正如 sequelize 文档所说,在没有属性的情况下调用此方法不会执行任何操作。另外,在文档中,我没有找到任何可以让我简单地做我需要做的事情。

在此先感谢您的帮助。

编辑: 举例说明我正在努力实现的目标,我已经有了我的模型的一个实例: Model.findById(1).then(function(myInstance){ [...] myInstance.update() //here, I didn't change any attributes of myInstance and I would like to update the field udpated_at without doing another query. [...] }): 问题是:如何使用一种方法更新我之前实例的字段 updated_at?

要更新实例值,您可以使用instance.set(key, value, [options])

myInstance.set('updatedAt', new Date());
myInstance.save().then(function() {
  // my nice callback stuff
});

如果您没有实例,sequelize docs 有一个很好的执行更新查询的例子:

Post.update({
  updatedAt: null,
}, {
  where: {
    deletedAt: {
      $ne: null
    }
  }
});

我的解决方案是有点 hackey。我不得不更新实例上的一个字段,使其与它应该是的不同,所以 sequelize 认为该字段发生了变化,即使它没有;并确保之后传入正确的字段数据。

例如,假设变量 myInstance 有一个名为 title 的字段,而变量 data 保存未更改的(或新的)标题 ( {title:"OLD_OR_NEW_TITLE"} ) .如果我添加到代码 myInstance.set('title', data.title+'_FAKE'),那么当 update/save 方法被调用时( myInstance.update(data) ),sequelize 会认为该字段已更改,即使它可能没有。