如何禁用 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 }
);
我需要一个 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 }
);