如何使用 Sequelize 操作 PostgreSQL 数据库

介绍

Sequelize 是一款基于 Node.js 的 ORM(对象关系映射)框架,支持操作多种关系型数据库,包括 PostgreSQL、MySQL、Oracle、SQLite 等。本文主要介绍如何使用 Sequelize 操作 PostgreSQL 数据库。

准备工作

在开始使用 Sequelize 前,需要先安装 Node.js 和 PostgreSQL 数据库,并创建一个新的数据库。

可以通过以下步骤创建一个名为 testdb 的数据库:

  1. 启动 PostgreSQL 数据库
  2. 进入 PostgreSQL shell:psql -U [username],其中 [username] 是已有的数据库用户
  3. 创建数据库:CREATE DATABASE testdb;

安装 Sequelize

在 Node.js 项目中使用 Sequelize,需要先安装该框架:

npm install --save sequelize pg pg-hstore

其中,pg 是 Node.js 的 PostgreSQL 驱动程序,而 pg-hstore 是将 JSON 数据转换为 SQL 值的帮助程序。我们需要同时安装这两个包。

定义 Model

在 Sequelize 中,Model 表示一个数据库表。通过定义 Model,可以方便地进行数据库操作。

下面是一个名为 User 的 Model 示例:

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize({
  dialect: 'postgresql',
  database: 'testdb',
  username: 'postgres',
  password: 'password'
});

class User extends Model {}

User.init({
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true,
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
  },
  password: {
    type: DataTypes.STRING,
    allowNull: false,
  },
}, {
  sequelize,
  modelName: 'User',
  freezeTableName: true,
});

以上代码中,我们首先使用 Sequelize 初始化了一个新的 sequelize 实例,其中包括数据库名称、用户名和密码等相关信息。

然后,我们定义了一个名为 User 的 Model,并使用 User.init 方法初始化其属性。User Model 包括 id、name、email、password 四个字段。

通过 sequelize 参数指定 User Model 的数据库连接,modelName 参数指定该 Model 的名称,freezeTableName 参数可以防止 Sequelize 将表名转换为复数形式。

增删改查

插入数据

通过 create 方法可以向数据库中插入一条新的记录。

User.create({
  name: 'Alice',
  email: 'alice@example.com',
  password: '123456',
}).then(() => {
  console.log('User created successfully');
}).catch((err) => {
  console.error('Error creating user:', err);
});

查询数据

Sequelize 提供了各种查询数据的方法。比如,使用 findAll 方法可以获取数据库中全部记录:

User.findAll().then((users) => {
  console.log(users);
}).catch((err) => {
  console.error('Error getting users:', err);
});

使用 findOne 方法可以获取单条记录:

User.findOne({ where: { email: 'alice@example.com' } }).then((user) => {
  console.log(user);
}).catch((err) => {
  console.error('Error getting user:', err);
});

更新数据

通过 update 方法可以更新数据库中已有的记录:

User.update(
  { name: 'Alice Smith' },
  { where: { email: 'alice@example.com' } },
).then(() => {
  console.log('User updated successfully');
}).catch((err) => {
  console.error('Error updating user:', err);
});

删除数据

通过 destroy 方法可以删除数据库中已有的记录:

User.destroy({ where: { email: 'alice@example.com' } }).then(() => {
  console.log('User deleted successfully');
}).catch((err) => {
  console.error('Error deleting user:', err);
});

总结

本文介绍了如何使用 Sequelize 操作 PostgreSQL 数据库。通过定义 Model,可以方便地进行数据库的增删改查操作。Sequelize 还提供了多种查询数据的方法,方便用户进行数据库操作。

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


纠错反馈