Sequelize 在 Postgresql 中如何设置默认值?

在使用 Sequelize 对 Postgresql 进行开发时,经常需要设置默认值,以便在创建记录时自动填充某些字段。本文将介绍如何使用 Sequelize 在 Postgresql 中设置默认值。

什么是 Sequelize?

Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping)库,支持多种数据库,包括 MySQL、Postgresql、SQLite 和 MSSQL 等。Sequelize 提供了一种将数据库表映射到 JavaScript 对象的方式,使得在 Node.js 应用程序中直接操作数据库变得更加简单和方便。

如何在 Sequelize 中设置默认值?

在 Sequelize 中,可以使用 defaultValue 属性来设置默认值。这个属性可以设置为一个常量值、一个函数或一个 Sequelize 数据类型的实例。下面是一个示例:

const User = sequelize.define('user', {
  name: {
    type: DataTypes.STRING,
    defaultValue: 'John Doe'
  },
  email: {
    type: DataTypes.STRING,
    defaultValue: function() {
      return 'user' + Math.random() + '@example.com';
    }
  },
  age: {
    type: DataTypes.INTEGER,
    defaultValue: sequelize.literal('CURRENT_DATE - "birthdate"')
  }
});

在这个示例中,我们定义了一个名为 User 的模型,其中包含三个字段:nameemailagenameemail 字段的默认值分别为一个常量字符串和一个函数,而 age 字段的默认值是一个 Sequelize 数据类型的实例,它使用 Postgresql 的 CURRENT_DATE 函数来计算用户的年龄。

如何在 Postgresql 中设置默认值?

在 Postgresql 中,可以使用 DEFAULT 关键字来设置默认值。下面是一个示例:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL DEFAULT 'John Doe',
  email VARCHAR(255) NOT NULL DEFAULT 'user@example.com',
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

在这个示例中,我们创建了一个名为 users 的表,其中包含三个字段:nameemailcreated_atnameemail 字段的默认值分别为一个常量字符串,而 created_at 字段的默认值是 Postgresql 的 CURRENT_TIMESTAMP 函数,它用于记录用户的创建时间。

如何在 Sequelize 和 Postgresql 中使用默认值?

在 Sequelize 和 Postgresql 中,可以同时使用 defaultValueDEFAULT 来设置默认值。下面是一个示例:

const User = sequelize.define('user', {
  name: {
    type: DataTypes.STRING,
    defaultValue: 'John Doe',
    allowNull: false
  },
  email: {
    type: DataTypes.STRING,
    defaultValue: 'user@example.com',
    allowNull: false
  },
  created_at: {
    type: DataTypes.DATE,
    defaultValue: sequelize.literal('CURRENT_TIMESTAMP'),
    allowNull: false
  }
}, {
  timestamps: false
});
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL DEFAULT 'John Doe',
  email VARCHAR(255) NOT NULL DEFAULT 'user@example.com',
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

在这个示例中,我们定义了一个名为 User 的模型和一个名为 users 的表,它们都包含三个字段:nameemailcreated_atnameemail 字段的默认值分别为一个常量字符串,而 created_at 字段的默认值是 Postgresql 的 CURRENT_TIMESTAMP 函数,它用于记录用户的创建时间。同时,我们还设置了 allowNull: false 来确保这些字段不为空。

总结

在本文中,我们介绍了如何在 Sequelize 和 Postgresql 中设置默认值。通过使用 defaultValueDEFAULT,我们可以轻松地为数据库表中的字段设置默认值,从而提高开发效率和数据的准确性。希望本文对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c49ee4add4f0e0fff2c9bc