CNode

Sequelize里如何给updatedAt或updated_at设置自己的值?

问答
Eelicip发布于9 年前最后回复9 年前7 回复11576 浏览0 收藏

我发现用create或者save存储对象的时候,存入到mysql的created_at和deleted_at值是根据传入对象中提供的值设置的,但是updated_at并没有根据传入的值设置,而是根据插入时间自动创建了。搜遍了google未找到解决方法或者方法都不奏效了。 大家有遇到过这个问题么?

因为我需要根据updated_at值来判断云端服务器上的数据和本地数据的差别来做同步,所以需要把updated_at的值更新为自己指定的一个值。 求赐教!

查看回复

回复 (7)

H
hezhongfeng#1·9 年前

那你就添加的一个列叫做updated_XXX不就完了吗 别去改原本的创造时间和更新时间

E
elicip#2·9 年前
H
hezhongfeng#3·9 年前
引用 elicip@hezhongfeng 这样我就不问这个问题了。还是谢谢你。

@elicip 我的建议就是别改他自动创建的~

E
elicip#4·9 年前
引用 hezhongfeng@elicip 我的建议就是别改他自动创建的

@hezhongfeng 自己实现一个updated现在有个问题就是我希望当我提供了updated这个字段值的时候就用提供的值,没有提供时用当前时间来设置,不知道要如何实现

N
nullcc#5·9 年前

你可以写一个基础model的原型,其他所有model都以在这个原型基础上创建,比如提供一个自己的updated_at字段,presave的时候检查这个字段是否有值,如果有值就用这个值,否则用它自己自动创建的那个updated字段。

S
semicoyoung#6·9 年前
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,
})

可以试试这样。

L
luoyjx#7·9 年前
sequelize.define("User", {
        ...
}, {
        timestamps: false,
        ...
});
参与回复
登录后即可参与回复。登录