避免 created_at 和 updated_at 由 sequelize 自动生成
Posted
技术标签:
【中文标题】避免 created_at 和 updated_at 由 sequelize 自动生成【英文标题】:Avoid created_at and updated_at being auto generated by sequelize 【发布时间】:2016-08-22 17:39:18 【问题描述】:如何定义一个为其提供 created_at 和 updated_at 而不是生成的模型?
我正在从已经有 created_at
和 updated_at
字段数据的地方导入数据,我想保留这些数据,而不是在通过 sequelize(我们的辅助存储)创建/更新对象时生成。
我已经尝试了模型定义和选项的所有可能排列以使其正常工作,并且仍然用它自己的时间戳覆盖我的字段:silent: true
等...
需要明确的是,输入数据已createAt 和updatedAt,我想使用sequelize 的bulkCreate() 等,这样提供的输入值将作为created_at 和updated_at 使用并存储在模型上,而不是由sequelize 生成。
这是我当前的模型定义:
const Lead = sequelize.define('lead',
objectId:
type: Sequelize.STRING,
field: 'objectId',
primaryKey: true,
allowNull: false
,
firstName:
type: Sequelize.STRING,
field: 'first_name'
,
lastName:
type: Sequelize.STRING,
field: 'last_name'
,
phoneNumber:
type: Sequelize.STRING,
field: 'phone_number'
,
createdAt:
type: Sequelize.DATE,
field: 'created_at',
,
updatedAt:
type: Sequelize.DATE,
field: 'updated_at'
,
freezeTableName: true, // Model tableName will be the same as the model name
timestamps: false,
underscored: true
);
【问题讨论】:
【参考方案1】:选项是
timestamps: false,
timestamps
写成全小写
更新:
通过查看bulkCreate()
函数的代码,it looks that it always updates the timestamps,因此,如果没有补丁,现在是不可能的
【讨论】:
好的,谢谢,我也试过了,但还是不行,我会在问题中更改我的模型定义以反映这一点。所有导入的行仍然具有完全相同的 createdAt 和 updatedAt(插入时间),而不是使用提供的 createdAt 和 updatedAt。 看来我得提交补丁了,好吧,你知道维护者是否很活跃吗? 最后一次提交是一天前的,所以它们看起来很活跃。以上是关于避免 created_at 和 updated_at 由 sequelize 自动生成的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 中 created_at 和 updated_at 列的优点是啥
将 created_at 和 updated_at 字段添加到猫鼬模式
将 created_at 和 updated_at 字段添加到猫鼬模式
Laravel 合并 created_at 和 updated_at 时间戳