如何禁用 Sequelize 模型中的 createdAt 字段?

How to disable createdAt field in a Sequelize model?

我需要一个 updatedAt 字段,但不需要 createdAt 字段。

所以,我写了这个模型:

  const Vote = sequelize.define('Vote', {
    createdAt: false,
    updatedAt: { type: DataTypes.DATE, allowNull: false },
    type: { type: DataTypes.INTEGER, allowNull: true },
    userId: { type: DataTypes.INTEGER, allowNull: false },
    postId: { type: DataTypes.INTEGER, allowNull: false }
  });

但是,当我尝试查找一行时,Sequelize 出于某种原因包含 createdAt。我也试过只删除 createdAt: false,但没有任何区别。

我是否只需要在所有查询中手动过滤掉 createdAt

这不是应该由我的模型控制吗?

谢谢!

好的,因此您可以通过禁用时间戳来禁用 createdAt 同时保持 updatedAt,然后手动添加回 updatedAt 并使用文字时间戳类型自动设置 updatedAt正常。

像这样:

    updatedAt: {
      type: DataTypes.DATE,
      allowNull: false,
      defaultValue: sequelize.literal('CURRENT_TIMESTAMP')
    },
    type: { type: DataTypes.INTEGER, allowNull: true },
    userId: { type: DataTypes.INTEGER, allowNull: false },
    postId: { type: DataTypes.INTEGER, allowNull: false }
  },
  { timestamps: false }
  );