如何在不修改任何属性的情况下更新续集模型的字段 '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 会认为该字段已更改,即使它可能没有。
我在 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 会认为该字段已更改,即使它可能没有。