简介
Sequelize 是一个 Node.js ORM(Object-Relational Mapping,对象关系映射)框架,提供了对多种数据库的支持,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等。在 Express.js 中使用 Sequelize 可以方便地进行数据库操作,提高开发效率。
本文将介绍在 Express.js 中使用 Sequelize ORM 进行数据库操作的步骤和注意事项,并提供示例代码。
步骤
安装 Sequelize 和相关依赖
使用 npm 安装 Sequelize 和相关依赖:
npm install --save sequelize mysql2
其中,mysql2 是 Sequelize 的 MySQL 驱动程序。
配置 Sequelize
在 Express.js 中使用 Sequelize 需要进行相关配置。在 app.js 文件中添加以下代码:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
sequelize.authenticate().then(() => {
console.log('Connection has been established successfully.');
}).catch(err => {
console.error('Unable to connect to the database:', err);
});其中,database、username 和 password 分别为数据库名称、用户名和密码,host 为数据库主机地址,dialect 为数据库类型。
创建模型
在 Sequelize 中,模型是指与数据库中的表相对应的 JavaScript 对象。创建模型需要定义模型的属性和方法。
以下是一个示例模型:
// www.javascriptcn.com code example
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
}
});
User.sync({ force: true }).then(() => {
console.log('User table created.');
});在上面的代码中,定义了一个名为 user 的模型,包含 id、username 和 password 三个属性。其中,id 是主键,自增长;username 和 password 均为字符串类型,且不能为空。
模型创建完成后,使用 sync() 方法将模型与数据库中的表同步。force: true 表示如果表已存在,则先删除表再创建。
进行数据库操作
在 Express.js 中使用 Sequelize 进行数据库操作时,需要先引入相应的模型,然后调用相应的方法进行操作。
以下是一些常用的数据库操作方法:
查询所有记录:
User.findAll().then(users => { console.log(users); });根据条件查询记录:
User.findAll({ where: { username: 'admin' } }).then(users => { console.log(users); });新增记录:
User.create({ username: 'admin', password: '123456' }).then(user => { console.log(user); });更新记录:
// www.javascriptcn.com code example User.update({ password: '654321' }, { where: { username: 'admin' } }).then(result => { console.log(result); });删除记录:
User.destroy({ where: { username: 'admin' } }).then(result => { console.log(result); });
注意事项
在使用 Sequelize 进行数据库操作时,需要注意以下几点:
Sequelize 支持多种数据库,但不同数据库的语法略有差异,需要根据实际情况进行调整。
在进行数据库操作前,需要先进行数据库连接验证,确保连接成功。
在创建模型时,需要定义模型的属性和方法,并使用
sync()方法将模型与数据库中的表同步。在进行数据库操作时,需要先引入相应的模型,然后调用相应的方法进行操作。
示例代码
以下是一个完整的示例代码,实现了一个简单的用户管理系统:
// www.javascriptcn.com code example
const express = require('express');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
}
});
User.sync({ force: true }).then(() => {
console.log('User table created.');
});
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.get('/users', (req, res) => {
User.findAll().then(users => {
res.json(users);
});
});
app.get('/users/:id', (req, res) => {
User.findByPk(req.params.id).then(user => {
res.json(user);
});
});
app.post('/users', (req, res) => {
User.create({
username: req.body.username,
password: req.body.password
}).then(user => {
res.json(user);
});
});
app.put('/users/:id', (req, res) => {
User.update({
password: req.body.password
}, {
where: {
id: req.params.id
}
}).then(result => {
res.json(result);
});
});
app.delete('/users/:id', (req, res) => {
User.destroy({
where: {
id: req.params.id
}
}).then(result => {
res.json(result);
});
});
app.listen(3000, () => {
console.log('Server started.');
});在上面的代码中,定义了一个名为 user 的模型,包含 id、username 和 password 三个属性。在 Express.js 中定义了 /users、/users/:id、/users、/users/:id 和 /users/:id 五个路由,分别实现了查询所有用户、查询单个用户、新增用户、更新用户和删除用户等功能。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d929b9a941bf71340ada21