And*_*eas 3 node.js express sequelize.js sequelize-cli
我将Node Express与Sequelize一起使用,并且要将数据库中“日期”列的defaultValue设置为今天的日期。我尝试了以下迁移,但没有成功,因为它将默认日期设置为与运行迁移相同的日期。我希望将其设置为与创建行时相同的日期。
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'Todos',
'date',
{
type: Sequelize.DATEONLY,
allowNull: false,
defaultValue: new Date()
}
)
},
Run Code Online (Sandbox Code Playgroud)
我不明白那将如何工作。
asu*_*aaa 11
Sequelize.NOW将来会工作,但有些版本(我试过 4.43.0)似乎不支持它。我成功地设置now()了使用Sequelize.fn('now').
{
type: Sequelize.DATEONLY,
allowNull: false,
defaultValue: Sequelize.fn('now')
}
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/sequelize/sequelize/issues/4679
Sha*_*ian 10
https://github.com/sequelize/sequelize/issues/645#issuecomment-18461231
createdAt: {
field: 'created_at',
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW
}
Run Code Online (Sandbox Code Playgroud)
您需要将MySQL函数用作默认值NOW()。
因此,您的列声明应类似于:
{
type: Sequelize.DATEONLY,
allowNull: false,
defaultValue: Sequelize.NOW
}
Run Code Online (Sandbox Code Playgroud)
请记住,这不会填充迁移中的字段。它们将是空的,因为它们不是用续集创建的。
小智 5
SQL Server 用户必须使用literal('CURRENT_TIMESTAMP')
createdAt: {
field: 'created_at',
type: DataTypes.DATE,
allowNull: false,
defaultValue: literal('CURRENT_TIMESTAMP'),
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5767 次 |
| 最近记录: |