Node.js 连接 mysql 数据库使用 Sequelize 详解
前言
在前端开发中,数据库是必不可少的一部分。而 Node.js 作为一种后端开发语言,也需要连接数据库进行数据的存储和管理。本文将介绍如何使用 Sequelize 连接 mysql 数据库,并提供详细的示例代码和操作指南。
一、Sequelize 简介
Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping)框架,它提供了一种面向对象的方式来操作数据库。Sequelize 支持多种数据库(如 mysql、postgres、sqlite 等)。
Sequelize 的主要功能包括:
- 数据库连接和配置
- 数据库表的创建、修改和删除
- 数据库表的查询、更新和删除
- 数据库事务的支持
- 数据库关联查询的支持
二、安装和配置 Sequelize
- 安装 Sequelize
使用 npm 安装 Sequelize:
npm install sequelize --save
- 安装 mysql
使用 npm 安装 mysql:
npm install mysql --save
- 配置 Sequelize
在使用 Sequelize 之前,需要先进行配置。在项目的根目录下创建一个 config.js 文件,配置数据库连接信息:
// javascriptcn.com 代码示例 module.exports = { development: { username: 'root', password: 'root', database: 'database_development', host: '127.0.0.1', dialect: 'mysql' }, test: { username: 'root', password: null, database: 'database_test', host: '127.0.0.1', dialect: 'mysql' }, production: { username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, host: process.env.DB_HOSTNAME, dialect: 'mysql' } };
三、连接数据库
在使用 Sequelize 之前,需要先连接数据库。在项目的入口文件(如 app.js 或 index.js)中添加以下代码:
// javascriptcn.com 代码示例 const Sequelize = require('sequelize'); const config = require('./config'); const sequelize = new Sequelize(config.development.database, config.development.username, config.development.password, { host: config.development.host, dialect: config.development.dialect }); sequelize.authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); });
以上代码用于连接名为 database_development 的数据库。可以根据实际情况修改数据库的名称、用户名、密码、主机和数据库类型。
四、定义模型
在 Sequelize 中,每个表都对应着一个模型。在定义模型之前,需要先安装 sequelize-cli。使用以下命令进行安装:
npm install sequelize-cli -g
接着,在项目的根目录下运行以下命令创建一个名为 User 的模型:
sequelize model:create --name User --attributes name:string,email:string,password:string
运行以上命令后,Sequelize 会自动生成一个名为 user 的表和一个名为 User 的模型。
五、查询数据
在 Sequelize 中,查询数据主要有以下两种方式:
- 使用模型自带的方法查询数据
- 使用 Query 方法查询数据
以下是使用模型自带的方法查询数据的示例代码:
// javascriptcn.com 代码示例 const User = sequelize.define('User', { name: Sequelize.STRING, email: Sequelize.STRING, password: Sequelize.STRING }); User.findAll().then(users => { console.log(users); });
以上代码用于查询 user 表中的所有数据。
以下是使用 Query 方法查询数据的示例代码:
sequelize.query('SELECT * FROM user', { type: Sequelize.QueryTypes.SELECT }) .then(users => { console.log(users); });
以上代码用于查询 user 表中的所有数据,并返回一个包含所有数据的数组。
六、插入数据
在 Sequelize 中,插入数据主要有以下两种方式:
- 使用模型自带的方法插入数据
- 使用 Query 方法插入数据
以下是使用模型自带的方法插入数据的示例代码:
// javascriptcn.com 代码示例 const User = sequelize.define('User', { name: Sequelize.STRING, email: Sequelize.STRING, password: Sequelize.STRING }); User.create({ name: 'John Doe', email: 'john.doe@example.com', password: 'password' }).then(user => { console.log(user); });
以上代码用于向 user 表中插入一条数据。
以下是使用 Query 方法插入数据的示例代码:
sequelize.query("INSERT INTO user (name, email, password) VALUES ('John Doe', 'john.doe@example.com', 'password')", { type: Sequelize.QueryTypes.INSERT }) .then(result => { console.log(result); });
以上代码用于向 user 表中插入一条数据,并返回插入的数据的 ID。
七、更新数据
在 Sequelize 中,更新数据主要有以下两种方式:
- 使用模型自带的方法更新数据
- 使用 Query 方法更新数据
以下是使用模型自带的方法更新数据的示例代码:
// javascriptcn.com 代码示例 const User = sequelize.define('User', { name: Sequelize.STRING, email: Sequelize.STRING, password: Sequelize.STRING }); User.update({ name: 'Jane Doe' }, { where: { name: 'John Doe' } }) .then(result => { console.log(result); });
以上代码用于将 user 表中 name 为 John Doe 的数据的 name 更新为 Jane Doe。
以下是使用 Query 方法更新数据的示例代码:
sequelize.query("UPDATE user SET name='Jane Doe' WHERE name='John Doe'", { type: Sequelize.QueryTypes.UPDATE }) .then(result => { console.log(result); });
以上代码用于将 user 表中 name 为 John Doe 的数据的 name 更新为 Jane Doe,并返回更新的数据的行数。
八、删除数据
在 Sequelize 中,删除数据主要有以下两种方式:
- 使用模型自带的方法删除数据
- 使用 Query 方法删除数据
以下是使用模型自带的方法删除数据的示例代码:
// javascriptcn.com 代码示例 const User = sequelize.define('User', { name: Sequelize.STRING, email: Sequelize.STRING, password: Sequelize.STRING }); User.destroy({ where: { name: 'John Doe' } }) .then(result => { console.log(result); });
以上代码用于删除 user 表中 name 为 John Doe 的数据。
以下是使用 Query 方法删除数据的示例代码:
sequelize.query("DELETE FROM user WHERE name='John Doe'", { type: Sequelize.QueryTypes.DELETE }) .then(result => { console.log(result); });
以上代码用于删除 user 表中 name 为 John Doe 的数据,并返回删除的数据的行数。
总结
本文介绍了如何使用 Sequelize 连接 mysql 数据库,并提供了详细的示例代码和操作指南。通过本文的学习,读者可以了解 Sequelize 的基本使用方法,进而在实际开发中更加熟练地使用 Sequelize 进行数据库操作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6568308dd2f5e1655d0f872a