📅  最后修改于: 2023-12-03 15:17:28.015000             🧑  作者: Mango
Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping)框架,用于管理 SQL 数据库,例如 MySQL、PostgreSQL、SQLite 和 MS SQL。
在安装之前,请确保已经安装了 Node.js 和对应的数据库驱动程序。以下是安装 Sequelize 的步骤。
npm install --save sequelize
npm install --save mysql2 # 适用于 MySQL
npm install --save postgres # 适用于 PostgreSQL
npm install --save sqlite3 # 适用于 SQLite
npm install --save tedious # 适用于 MS SQL
yarn add sequelize
yarn add mysql2 # 适用于 MySQL
yarn add postgres # 适用于 PostgreSQL
yarn add sqlite3 # 适用于 SQLite
yarn add tedious # 适用于 MS SQL
以下是一个使用 Sequelize 建立一个简单的用户数据表的示例:
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('mysql://root:@localhost:3306/mydatabase');
const User = sequelize.define('User', {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING,
allowNull: false
}
});
(async () => {
await sequelize.sync({ force: true });
const jane = await User.create({
firstName: "Jane",
lastName: "Doe"
});
console.log(jane.toJSON());
})();
首先,我们需要引入 Sequelize 和相关数据库的驱动程序。然后,我们创建一个 Sequelize 实例并指定数据库连接信息。
接着,我们定义了一个名为 User
的模型,模型包含了两个属性 firstName
和 lastName
,以及一些验证规则。
最后,我们调用了 sequelize.sync
方法用于同步模型到数据库,并创建了一个名为 jane
的用户记录,并打印出来。
使用 Sequelize ORM,我们可以在代码层面创建、修改和删除数据库中的表结构以及表之间的关系。以下是一个用户和任务的数据模型定义:
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('mysql://root:@localhost:3306/mydatabase');
class User extends Model { }
User.init({
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING
}, { sequelize, modelName: 'user' });
class Task extends Model { }
Task.init({
title: DataTypes.STRING,
description: DataTypes.TEXT,
completed: DataTypes.BOOLEAN
}, { sequelize, modelName: 'task' });
// 定义关系
User.hasMany(Task);
Task.belongsTo(User);
Sequelize
:Sequelize 类代表了整个 ORM 框架的入口。使用 Sequelize 类你可以定义数据库连接实例、模型和模型实例等。Model
:Model 类代表了数据表中的一行,也就是模型实例。每一个模型实例都对应了一个数据库记录,你可以通过模型实例进行增、删、改、查的操作。一个模型可以扩展其他模型或 Model。DataTypes
:DataTypes 是用于定义数据类型的一个对象。Sequelize 支持的数据类型包括:STRING,TEXT,INTEGER,BIGINT,FLOAT,DOUBLE,DECIMAL,BOOLEAN,ENUM,DATE,DATEONLY,TIME,NOW,CHAR,UUID,COMPOSITE 和 JSON。sequelize
:sequelize 实例代表了一个数据库连接,是使用 Sequelize 的核心。modelName
:modelName 是在 Sequelize 中使用的模型名称。此名称将显示在数据库的表名称中,以小写复数形式存在。查询数据是使用 Sequelize 最常见的操作之一。Sequelize 支持原始查询语句、查询构建器和 Promise 风格的查询方法。
以下是查询所有用户的示例:
const users = await User.findAll();
console.log(users.map(u => u.toJSON()));
以下是查询所有任务并关联其用户的示例:
const tasks = await Task.findAll({ include: User });
console.log(tasks.map(u => u.toJSON()));
在上面的代码中,我们使用了 findAll
方法来查询所有记录,并将结果打印出来。我们还使用了 include
属性来关联 Task 和 User 表,查询时会同时查询两个表的数据。
以下是更新一条记录的示例:
const user = await User.findOne({ where: { id: 1 } });
user.firstName = 'John';
user.lastName = 'Doe';
await user.save();
在上面的代码中,我们使用了 findOne
方法来获取 id 为1的用户记录。然后,我们修改了 user 对象的 firstName 和 lastName 属性,并调用 save
方法将其保存到数据库中。
以下是删除一条记录的示例:
const user = await User.findOne({ where: { id: 1 } });
await user.destroy();
在上方的代码中,我们使用了 findOne
方法获取 id 为1的用户记录,然后调用了 destroy
方法将其从数据库中删除。