在 Sequelize 中,设置字段的默认值是一个常见的需求。你可以通过定义模型时指定字段的 defaultValue
属性来实现这一点。以下是一个简单的示例,展示了如何在 Sequelize 中设置字段的默认值。
首先,确保你已经安装了 Sequelize 和相应的数据库驱动(例如,pg
、mysql2
等)。
npm install sequelize pg
接下来,创建一个 Sequelize 实例并定义一个模型,同时在字段上设置默认值。
const { Sequelize, DataTypes, Model } = require('sequelize');
// 创建 Sequelize 实例
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'postgres' // 或者 'mysql', 'sqlite', 'mariadb', 'mssql'
});
// 定义模型
class User extends Model {}
User.init({
// 字段定义
username: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
createdAt: {
type: DataTypes.DATE,
defaultValue: Sequelize.fn('NOW') // 设置默认值为当前时间
},
isActive: {
type: DataTypes.BOOLEAN,
defaultValue: true // 设置默认值为 true
}
}, {
sequelize, // 传递 Sequelize 实例
modelName: 'User', // 模型名称
tableName: 'users', // 数据库表名称
timestamps: true, // 自动添加 createdAt 和 updatedAt 字段
paranoid: true // 启用软删除(添加 deletedAt 字段)
});
// 同步模型到数据库
sequelize.sync()
.then(() => {
console.log('Database & tables created!');
})
.catch(err => {
console.error('Unable to create tables:', err);
});
在这个示例中,我们定义了一个 User
模型,其中包含以下字段:
username
:一个不允许为空的唯一字符串字段。email
:一个不允许为空的唯一字符串字段。createdAt
:一个日期字段,默认值为当前时间(使用Sequelize.fn('NOW')
)。isActive
:一个布尔字段,默认值为true
。
此外,我们还设置了 timestamps: true
,这样 Sequelize 会自动添加 createdAt
和 updatedAt
字段。由于我们已经手动定义了 createdAt
字段并设置了默认值,因此自动添加的 createdAt
字段将不会生效(你可以根据需要选择是否保留自动添加的字段)。
请根据你的实际需求和数据库配置调整上述代码。确保你的数据库已经创建,并且 Sequelize 实例中的连接信息是正确的。