Sequelize一个易用且基于 promise 的 Node.js ORM 工具

Sequelize中文文档|Sequelize中文网

Sequelize 是一个易用且基于 promise 的 Node.js ORM 工具 适用于 Postgres, MySQL, MariaDB, SQLite, DB2, Microsoft SQL Server, Snowflake, Oracle DBDb2 for IBM i. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能.

安装

Sequelize 的使用可以通过 npm (或 yarn).

以下命令将安装 Sequelize v7. 如果你正在寻找 Sequelize v6(发布为 sequelize 而不是 @sequelize/core), 访问 v6 文档

复制代码
# 这将安装 v6 最新版本的 Sequelize
npm i sequelize

# 这将安装 v7 最新 alpha 版本的 Sequelize
npm i @sequelize/core

# 这将安装 v6 最新版本的 Sequelize
yarn add sequelize

# 这将安装 v7 最新 alpha 版本的 Sequelize
yarn add @sequelize/core

接下来, 你还必须手动为所选数据库安装驱动程序:

复制代码
# 使用 npm
npm i pg pg-hstore # PostgreSQL
npm i mysql2 # MySQL
npm i mariadb # MariaDB
npm i sqlite3 # SQLite
npm i tedious # Microsoft SQL Server
npm i ibm_db # DB2
npm i odbc # IBM i

# 使用 yarn
yarn add pg pg-hstore # PostgreSQL
yarn add mysql2 # MySQL
yarn add mariadb # MariaDB
yarn add sqlite3 # SQLite
yarn add tedious # Microsoft SQL Server
yarn add ibm_db # DB2
yarn add odbc # IBM i

连接到数据库

要连接到数据库,必须创建一个 Sequelize 实例. 这可以通过将连接参数分别传递到 Sequelize 构造函数或通过传递一个连接 URI 来完成:

复制代码
const { Sequelize } = require('@sequelize/core');

// 方法 1: 传递一个连接 URI
const sequelize = new Sequelize('sqlite::memory:') // Sqlite 示例
const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname') // Postgres 示例

// 方法 2: 分别传递参数 (sqlite)
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: 'path/to/database.sqlite'
});

// 方法 3: 分别传递参数 (其它数据库)
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  // 选择一种支持的数据库:
  // 'mysql', 'mariadb', 'postgres', 'mssql', 'sqlite', 'snowflake', 'db2' or 'ibmi'
  dialect: 'postgres'
});

Sequelize 构造函数接受很多参数. 它们记录在 API 参考中.

测试连接

你可以使用 .authenticate() 函数测试连接是否正常:

复制代码
try {
  await sequelize.authenticate();
  console.log('Connection has been established successfully.');
} catch (error) {
  console.error('Unable to connect to the database:', error);
}

关闭连接

默认情况下,Sequelize 将保持连接打开状态,并对所有查询使用相同的连接. 如果你需要关闭连接,请调用 sequelize.close()(这是异步的并返回一个 Promise).

注意: 一旦 sequelize.close() 被调用, 就不可能打开新的连接. 你将需要创建一个新的 Sequelize 实例以再次访问你的数据库.

相关推荐
RoyLin3 小时前
TypeScript设计模式:单例模式
前端·后端·node.js
RoyLin3 小时前
TypeScript设计模式:工厂方法模式
前端·后端·node.js
RoyLin3 小时前
TypeScript设计模式:模板方法模式
前端·后端·node.js
RoyLin19 小时前
TypeScript设计模式:适配器模式
前端·后端·node.js
RoyLin1 天前
TypeScript设计模式:迭代器模式
javascript·后端·node.js
前端双越老师1 天前
2025 年还有前端不会 Nodejs ?
node.js·agent·全栈
人工智能训练师2 天前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Seveny072 天前
pnpm相对于npm,yarn的优势
前端·npm·node.js
huangql5202 天前
npm 发布流程——从创建组件到发布到 npm 仓库
前端·npm·node.js
荣达2 天前
koa洋葱模型理解
前端·后端·node.js