入门
在本教程中,您将学习如何进行 Sequelize 的简单设置。
安装
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(例如,使用 then
、catch
、finally
)。
当然,使用 async
和 await
也很好用。