我正在使用PostgreSQL的sequelize 2.0.0。 我想知道是否可以使用一种方法更新模型的'updated_at'字段。如果是,我该如何实现?
例如,在其他框架中,比如Laravel,你有model.touch()来自动更新模型的'updated_at'。
我已经尝试过使用model.save(),但正如sequelize doc所说,调用这个没有属性的方法什么都不做。此外,在文档中,我没有找到任何允许我做我需要做的事情。
提前感谢您的帮助。
编辑:
举一个我想要实现的例子,我已经有了我的模型实例:
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?
答案 0 :(得分:2)
要更新实例值,您可以使用DOWN
。
myInstance.set('updatedAt', new Date());
myInstance.save().then(function() {
// my nice callback stuff
});
如果您没有实例,instance.set(key, value, [options])就有一个做更新查询的好例子:
Post.update({
updatedAt: null,
}, {
where: {
deletedAt: {
$ne: null
}
}
});
答案 1 :(得分:0)
我的解决方案有点hackey。我不得不更新实例上的一个字段,使其与预期的字段不同,以便sequelize认为字段发生了变化,即使它没有变化;并确保之后传递了适当的现场数据。
例如,假设变量myInstance
有一个名为title
的字段,变量data
包含未更改的(或新的)标题({title:"OLD_OR_NEW_TITLE"}
)。如果我添加到代码myInstance.set('title', data.title+'_FAKE')
,那么当调用更新/保存方法(myInstance.update(data)
)时,sequelize会认为该字段已更改,即使它可能没有。