什么是 Sequelize
Sequelize 是一个 Node.js 中的 ORM 框架,它能够将 JavaScript 对象和数据库表之间进行映射,使得开发者能够使用面向对象的方式来操作数据库。Sequelize 支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL 等。
如何使用 Sequelize
安装 Sequelize
在使用 Sequelize 前,需要先安装它。可以使用 npm 或 yarn 来安装:
npm install sequelize # 或者 yarn add sequelize
同时,还需要安装相应的数据库驱动,例如使用 MySQL 时,需要安装 mysql2:
npm install mysql2 # 或者 yarn add mysql2
连接数据库
在使用 Sequelize 前,需要先建立数据库连接。可以通过以下代码来建立连接:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', });
其中,database
、username
和 password
分别是数据库名、用户名和密码,localhost
是数据库所在的主机名,mysql
是数据库类型。
定义模型
在 Sequelize 中,一个模型对应一个数据库表,可以通过定义模型来操作数据库表。以下是一个简单的例子:
// javascriptcn.com 代码示例 const { DataTypes } = require('sequelize'); const User = sequelize.define('User', { id: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, }, name: { type: DataTypes.STRING, allowNull: false, }, age: { type: DataTypes.INTEGER, allowNull: false, }, });
上面的代码定义了一个名为 User
的模型,它对应了一个名为 users
的数据库表。User
的属性包括 id
、name
和 age
,其中 id
是主键,name
和 age
是普通属性。DataTypes
是 Sequelize 提供的数据类型。
数据库操作
定义好模型后,就可以进行数据库操作了。以下是一些常见的操作:
查询数据
可以使用 findAll
方法查询所有数据:
const users = await User.findAll();
也可以使用 findOne
方法查询单条数据:
const user = await User.findOne({ where: { id: 1 } });
where
参数用来指定查询条件。
插入数据
可以使用 create
方法插入数据:
const user = await User.create({ name: '张三', age: 18 });
更新数据
可以使用 update
方法更新数据:
const [count, rows] = await User.update({ name: '李四' }, { where: { age: 18 } });
第一个参数是要更新的属性,第二个参数是要更新的条件。
删除数据
可以使用 destroy
方法删除数据:
const count = await User.destroy({ where: { age: 18 } });
where
参数用来指定删除条件。
关联模型
在 Sequelize 中,可以通过关联模型来进行多表查询。以下是一个例子:
// javascriptcn.com 代码示例 const { DataTypes, Model } = require('sequelize'); class User extends Model {} User.init({ id: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, }, name: { type: DataTypes.STRING, allowNull: false, }, age: { type: DataTypes.INTEGER, allowNull: false, }, }); class Post extends Model {} Post.init({ id: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, }, title: { type: DataTypes.STRING, allowNull: false, }, content: { type: DataTypes.TEXT, allowNull: false, }, }); User.hasMany(Post); Post.belongsTo(User); const user = await User.findOne({ where: { id: 1 }, include: Post, });
上面的代码定义了两个模型,User
和 Post
,它们之间是一对多的关系。User
模型通过 hasMany
方法关联了 Post
模型,Post
模型通过 belongsTo
方法关联了 User
模型。通过 include
参数,可以一次性查询出 User
和其所有的 Post
。
总结
Sequelize 是一个非常强大的 Node.js ORM 框架,可以帮助开发者更加方便地操作数据库。在使用 Sequelize 时,需要先安装它,然后建立数据库连接,定义模型,最后进行数据库操作。同时,Sequelize 还支持多表查询和关联模型等高级操作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6550d328d2f5e1655da9f9d9