0
点赞
收藏
分享

微信扫一扫

Sequelize 设置字段的默认值

小安子啊 2024-11-06 阅读 30


在 Sequelize 中,设置字段的默认值是一个常见的需求。你可以通过定义模型时指定字段的 defaultValue 属性来实现这一点。以下是一个简单的示例,展示了如何在 Sequelize 中设置字段的默认值。

首先,确保你已经安装了 Sequelize 和相应的数据库驱动(例如,pgmysql2 等)。

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 会自动添加 createdAtupdatedAt 字段。由于我们已经手动定义了 createdAt 字段并设置了默认值,因此自动添加的 createdAt 字段将不会生效(你可以根据需要选择是否保留自动添加的字段)。

请根据你的实际需求和数据库配置调整上述代码。确保你的数据库已经创建,并且 Sequelize 实例中的连接信息是正确的。


举报

相关推荐

0 条评论