跳至主要内容
版本:v6 - 稳定版

入门

在本教程中,您将学习如何进行 Sequelize 的简单设置。

安装

Sequelize 可通过 npm(或 yarn)获得。

npm install --save sequelize

您还需要手动安装您选择的数据库的驱动程序

# One of the following:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server
$ npm install --save oracledb # Oracle Database

连接到数据库

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

const { Sequelize } = require('sequelize');

// Option 1: Passing a connection URI
const sequelize = new Sequelize('sqlite::memory:') // Example for sqlite
const sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname') // Example for postgres

// Option 2: Passing parameters separately (sqlite)
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: 'path/to/database.sqlite'
});

// Option 3: Passing parameters separately (other dialects)
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: /* one of 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'db2' | 'snowflake' | 'oracle' */
});

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 实例才能再次访问您的数据库。

术语约定

请注意,在上面的示例中,Sequelize 指的是库本身,而 sequelize 指的是 Sequelize 的一个实例,它表示与一个数据库的连接。这是推荐的约定,并且将在整个文档中遵循。

阅读文档的提示

建议您在阅读 Sequelize 文档时在本地运行代码示例。这将帮助您更快地学习。最简单的方法是使用 SQLite 方言

const { Sequelize, Op, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

// Code here! It works!

要试验其他更难在本地设置的方言,您可以使用 Sequelize SSCCE GitHub 存储库,它允许您在所有受支持的方言上直接从 GitHub 运行代码,免费且无需任何设置!

新数据库与现有数据库

如果您是从头开始一个项目,并且您的数据库仍然为空,则可以从一开始就使用 Sequelize 来自动创建数据库中的每个表。

此外,如果您想使用 Sequelize 连接到一个已经填充了表和数据的数据库,那也可以!Sequelize 在这两种情况下都能满足您的需求。

日志记录

默认情况下,Sequelize 会将每个执行的 SQL 查询记录到控制台。options.logging 选项可用于自定义此行为,方法是定义每次 Sequelize 记录某些内容时执行的函数。默认值为 console.log,并且仅显示日志函数调用的第一个日志参数。例如,对于查询日志记录,第一个参数是原始查询,第二个(默认情况下隐藏)是 Sequelize 对象。

options.logging 的常用值

const sequelize = new Sequelize('sqlite::memory:', {
// Choose one of the logging options
logging: console.log, // Default, displays the first parameter of the log function call
logging: (...msg) => console.log(msg), // Displays all log function call parameters
logging: false, // Disables logging
logging: msg => logger.debug(msg), // Use custom logger (e.g. Winston or Bunyan), displays the first parameter
logging: logger.debug.bind(logger), // Alternative way to use custom logger, displays all messages
});

Promise 和 async/await

Sequelize 提供的大多数方法都是异步的,因此返回 Promise。它们都是 Promise,因此您可以开箱即用地使用 Promise API(例如,使用 thencatchfinally)。

当然,使用 asyncawait 也很好用。