【问题标题】:Avoid created_at and updated_at being auto generated by sequelize避免 created_at 和 updated_at 由 sequelize 自动生成
【发布时间】:2016-08-22 17:39:18
【问题描述】:

如何定义一个为其提供 created_at 和 updated_at 而不是生成的模型?

我正在从已经有 created_atupdated_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
});

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    选项是

    timestamps: false,
    

    timestamps 写成全小写

    更新:

    通过查看bulkCreate() 函数的代码,it looks that it always updates the timestamps,因此,如果没有补丁,现在是不可能的

    【讨论】:

    • 好的,谢谢,我也试过了,但还是不行,我会在问题中更改我的模型定义以反映这一点。所有导入的行仍然具有完全相同的 createdAt 和 updatedAt(插入时间),而不是使用提供的 createdAt 和 updatedAt。
    • 看来我得提交补丁了,好吧,你知道维护者是否很活跃吗?
    • 最后一次提交是一天前的,所以它们看起来很活跃。
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 2013-06-23
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多