简介
Sequelize 是一款基于 Promise 的 Node.js ORM(Object-Relational Mapping) 框架,支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库,提供了丰富的 API,可以方便地进行数据库操作。本文将介绍如何在 Express.js 中使用 Sequelize,包括安装、配置、模型定义、查询以及关联操作等内容。
安装
使用 npm 安装 Sequelize 和相应的数据库驱动程序:
npm install --save sequelize mysql2
配置
在 Express.js 项目中,可以在 app.js 或者其他入口文件中,引入 Sequelize,并进行配置:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' });
其中,'database'、'username' 和 'password' 分别为数据库名称、用户名和密码,host 和 dialect 分别指定数据库的地址和类型。
模型定义
在 Sequelize 中,模型定义类似于数据库表的定义,需要指定表名、字段名、字段类型、主键、外键、索引等信息。下面是一个简单的模型定义示例:
const User = sequelize.define('user', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: Sequelize.STRING, allowNull: false }, email: { type: Sequelize.STRING, allowNull: false, unique: true }, password: { type: Sequelize.STRING, allowNull: false } });
其中,User 是模型的名称,user 是表名。id、name、email 和 password 分别是字段名,Sequelize.INTEGER、Sequelize.STRING 等是字段类型。autoIncrement 和 primaryKey 分别指定自增和主键,allowNull 和 unique 分别指定是否允许为空和是否唯一。
查询
在 Sequelize 中,查询可以使用多种方式,包括 findAll、findOne、findByPk、create 等。下面是一个示例:
User.findAll({ where: { name: 'John' } }).then(users => { console.log(users); }); User.findOne({ where: { email: 'john@example.com' } }).then(user => { console.log(user); }); User.findByPk(1).then(user => { console.log(user); }); User.create({ name: 'John', email: 'john@example.com', password: '123456' }).then(user => { console.log(user); });
其中,findAll 和 findOne 分别查询多条和一条记录,findByPk 根据主键查询一条记录,create 新增一条记录。
关联操作
在 Sequelize 中,可以方便地进行关联操作,包括一对一、一对多、多对多等关联。下面是一个示例:
const Post = sequelize.define('post', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, title: { type: Sequelize.STRING, allowNull: false }, content: { type: Sequelize.TEXT, allowNull: false } }); User.hasMany(Post); Post.belongsTo(User); User.findOne({ where: { name: 'John' }, include: Post }).then(user => { console.log(user); }); User.create({ name: 'John', email: 'john@example.com', password: '123456', posts: [ { title: 'My first post', content: 'Hello, world!' } ] }, { include: Post }).then(user => { console.log(user); });
其中,Post 是另外一个模型,表示文章。User.hasMany(Post) 表示一对多关联,Post.belongsTo(User) 表示反向关联。User.findOne 中的 include 表示关联查询,User.create 中的 posts 表示新增关联记录。
总结
Sequelize 是一款强大的 Node.js ORM 框架,可以方便地进行数据库操作,尤其适用于 Express.js 项目。本文介绍了 Sequelize 的安装、配置、模型定义、查询以及关联操作等内容,希望能够对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658a92ddeb4cecbf2dfcad3d