我有一个使用sequelize作为ORM的node.js应用程序,如果本地postgres开发数据库中不存在表,它应该创建表。
如果存在“已创建”或“已修改”等时间戳列,则由sequelize创建的查询都会失败,这些列应将创建记录的时间作为默认值。
sequelize 生成的创建表查询包含此类字段的 GETDATE() 函数。
将查询粘贴到 PGAdmin 工具中会引发与 GETDATE() 相同的错误,就像在 node.js 中登录控制台一样。
我可以手动将 PGAdmin 中的查询更改为 NOW() 函数,但这令人沮丧,因为我的架构包含多个具有此类列的表。
这个问题有解决办法吗?
以下是sequelize、pg和pg-hstore的版本
"pg": "^8.11.1", "pg-hstore": "^2.3.4" “续集”:“^6.32.1”
postgres 的版本是“PostgreSQL 15.3,由 Visual C++ build 1914 编译,64 位”
您可以定义模型如下:
const YourModel = sequelize.define('YourModel', {
// Other columns...
createdAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.literal('NOW()')
},
updatedAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.literal('NOW()')
}
}, {
// Other model options...
});
使用这种方式可以覆盖默认的 Sequelize 功能