Sequelize里如何给updatedAt或updated_at设置自己的值?
我发现用create或者save存储对象的时候,存入到mysql的created_at和deleted_at值是根据传入对象中提供的值设置的,但是updated_at并没有根据传入的值设置,而是根据插入时间自动创建了。搜遍了google未找到解决方法或者方法都不奏效了。 大家有遇到过这个问题么?
因为我需要根据updated_at值来判断云端服务器上的数据和本地数据的差别来做同步,所以需要把updated_at的值更新为自己指定的一个值。 求赐教!
7 回复
那你就添加的一个列叫做updated_XXX
不就完了吗
别去改原本的创造时间和更新时间
@hezhongfeng 这样我就不问这个问题了。还是谢谢你。
@elicip 我的建议就是别改他自动创建的~
@hezhongfeng 自己实现一个updated现在有个问题就是我希望当我提供了updated这个字段值的时候就用提供的值,没有提供时用当前时间来设置,不知道要如何实现
你可以写一个基础model的原型,其他所有model都以在这个原型基础上创建,比如提供一个自己的updated_at字段,presave的时候检查这个字段是否有值,如果有值就用这个值,否则用它自己自动创建的那个updated字段。
let schema = xxx.xxx.define('table_name', {
createdAt: {
type: Sequelize.DATE,
field: 'created_at',
allowNull: false,
defaultValue: Sequelize.NOW
},
updatedAt: {
type: Sequelize.DATE,
field: 'updated_at',
allowNull: false,
detaultValue: Sequelize.NOW
}
}, {
tableName: 'table_name',
createdAt: false,
updatedAt: false,
})
可以试试这样。
sequelize.define("User", {
...
}, {
timestamps: false,
...
});