【问题标题】:Sequelize, does setting timestamps:true create the createdAt updatedAt columns in the migrations?续集,设置 timestamps:true 是否会在迁移中创建 createdAt updatedAt 列?
【发布时间】:2015-09-16 09:00:08
【问题描述】:

我在 sequelize 中的迁移脚本没有创建时间戳列 createdAt、updatedAt

Error: SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'createdAt' in 'field list'

我认为在迁移定义中将时间戳设置为 true 会自动创建列,我错了吗?

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.createTable('User', {
      id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        allowNull: false
      },
      uname: {
        type: Sequelize.STRING(50)
      }

    },{
      timestamps: true
    })
...

【问题讨论】:

  • example in the docs 手动指定了时间戳,所以我猜你错了。
  • 那么我想知道设置时间戳标志的目的是什么?
  • 你在哪里看到的?模型定义和迁移系统似乎是相当独立的。我只在模型定义中看到了时间戳标志。

标签: sequelize.js


【解决方案1】:

一般来说,迁移和模型规格是不同的——所以不要假设你在一个中做什么,你可以在另一个中做什么。在模型中,您通常会指定一些设置并自动执行 - 而在迁移中,您似乎必须手动设置模型中的自动设置。

因此,当您在模型上执行 .sync() 时,您无需指定 createdAtupdatedAtid 列(假设您选择了正确的选项来包括时间戳和避风港'没有指定你自己的主键) - 但迁移需要明确设置它们。

【讨论】:

    【解决方案2】:

    我迟到了,但为了清楚起见,我会回答。我想你误读了它在说什么。

    时间戳标志在模型定义页面的配置部分中指定,并且与偏执,下划线,freezetablename,tablename和版本标志一起“影响Sequelize处理列名的方式" 在某些情况下是一种行为。 http://docs.sequelizejs.com/manual/tutorial/models-definition.html#configuration

    而在同一模型定义页面的时间戳部分下有下一条注释:

    如果您使用的是 Sequelize 迁移,则需要添加 迁移定义中的 createdAt 和 updatedAt 字段:

    它指定手动将时间戳字段添加到迁移中

    module.exports = {
      up(queryInterface, Sequelize) {
        return queryInterface.createTable('my-table', {
          id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true,
          },
    
          // Timestamps
          createdAt: Sequelize.DATE,
          updatedAt: Sequelize.DATE,
        })
      },
      down(queryInterface, Sequelize) {
        return queryInterface.dropTable('my-table');
      },
    }
    

    http://docs.sequelizejs.com/manual/tutorial/models-definition.html#timestamps

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2015-10-11
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      相关资源
      最近更新 更多