Sequelize里如何给updatedAt或updated_at设置自己的值?
发布于 7 年前 作者 elicip 10192 次浏览 来自 问答

我发现用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,
        ...
});
回到顶部