【发布时间】:2021-12-15 08:59:44
【问题描述】:
您好,我正在使用带有 Postgres 数据库的 Sequelize
所以我试图将续集 createdAt 和 updatedAt 列上的日期格式化为YYYY-MM-DD HH:mm:ss 以及将列保持为snake_case 而不是camelcase 所以它们将是created_at 和updated_at我怎样才能做到这一点?我尝试了以下方法:
createdAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: moment.utc().format('YYYY-MM-DD HH:mm:ss'),
field: 'created_at'
},
或
createdAt: {
type: DataTypes.DATE,
defaultValue: sequelize.NOW,
set(value) {
return value.toISOString().replace(/\..+/g, '')
// coming in the db as 2021-10-31 01:34:48.81+00 so wanted to remove evrything after the dot
},
name: 'createdAt',
field: 'created_at',
},
不工作,我收到此错误
throw new Error(`Value for "${key}" option must be a string or a boolean, got ${typeof this.options[key]}`);
^
Error: Value for "createdAt" option must be a string or a boolean, got object
这是上面定义的整个表格,我已经确定了我需要帮助的地方
const Supplier = sequelize.define('Supplier', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
allowNull: false,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
len: [1, 50]
}
},
description: {
type: DataTypes.STRING,
allowNull: true,
},
}, {
tableName: 'suppliers',
timestamps: true,
createdAt: {
type: DataTypes.DATE,
defaultValue: sequelize.NOW,
set(value) {
return value.toISOString().replace(/\..+/g, '')
},
name: 'createdAt',
field: 'created_at',
},
updatedAt: {
type: DataTypes.DATE,
defaultValue: sequelize.NOW,
set(value) {
return value.toISOString().replace(/\..+/g, '')
},
field: 'updated_at',
},
// freezeTableName: true
// paranoid: true
});
谢谢
Today Sequelize docs is not working here is a webarchive's for it
https://web.archive.org/web/20200731154157/http://sequelize.org/master/index.html
【问题讨论】:
-
错误说 createdAt 需要一个字符串或一个布尔值,并且代码看起来像是分配了一个对象
createdAt: {...} -
我如何才能具体将其设为字符串并格式化为
YYYY-MM-DD HH:mm:ss并将列保持为蛇形。例如,我知道如果我这样做了:createdAt: 'created_at',,如他们的文档中所述,我将列设置为蛇形案例,所以我的另一个目标是格式化它,正如我所说的那样,数据库中没有毫秒,我该怎么做? @danh -
我刚刚在“get()”方法中进行了一些编辑,以获得您想要的确切格式,所以它现在准备好了。如果您将在您的问题下添加“postgres”标签以及此处需要“日期”类型,那将是很好的。
标签: javascript node.js postgresql date sequelize.js