Node.js MySQL 关系型数据库和 NPM 中 Sequelize 库
MySQL 关系型数据库
MySQL 是一种开源的关系型数据库管理系统,它使用 SQL(结构化查询语言)来管理数据。在 Node.js 中,可以使用 mysql 模块来与 MySQL 数据库进行交互。
安装和连接 MySQL 数据库
在使用 mysql 模块之前,需要先安装 MySQL 数据库,并创建一个数据库和一个用户。然后,可以使用以下代码连接到 MySQL 数据库:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'database',
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database!');
});
查询数据
可以使用 query()
方法查询数据,该方法接收一个 SQL 查询语句作为参数,并返回查询结果。以下是一个查询示例:
connection.query('SELECT * FROM users', (err, results, fields) => {
if (err) throw err;
console.log(results);
});
插入数据
可以使用 query()
方法插入数据,该方法接收一个 SQL 插入语句作为参数,并返回插入数据的 ID。以下是一个插入示例:
const user = { name: 'John', email: 'john@example.com' };
connection.query('INSERT INTO users SET ?', user, (err, result) => {
if (err) throw err;
console.log(`Inserted user with ID ${result.insertId}`);
});
更新数据
可以使用 query()
方法更新数据,该方法接收一个 SQL 更新语句作为参数,并返回更新的行数。以下是一个更新示例:
connection.query('UPDATE users SET name = ? WHERE id = ?', ['John Doe', 1], (err, result) => {
if (err) throw err;
console.log(`Updated ${result.affectedRows} row(s)`);
});
删除数据
可以使用 query()
方法删除数据,该方法接收一个 SQL 删除语句作为参数,并返回删除的行数。以下是一个删除示例:
connection.query('DELETE FROM users WHERE id = ?', [1], (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});
Sequelize 库
Sequelize 是一个 Node.js ORM(对象关系映射)库,它支持多种关系型数据库,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等。使用 Sequelize,可以将数据库表映射为 JavaScript 对象,从而更方便地进行数据操作。
安装和连接 Sequelize 库
在使用 Sequelize 库之前,需要先安装它。可以使用以下命令安装 Sequelize:
npm install sequelize
然后,可以使用以下代码连接到 MySQL 数据库:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'user', 'password', {
host: 'localhost',
dialect: 'mysql',
});
sequelize.authenticate()
.then(() => {
console.log('Connected to MySQL database!');
})
.catch((err) => {
console.error('Unable to connect to MySQL database:', err);
});
定义模型
在使用 Sequelize 进行数据操作之前,需要先定义模型。模型是数据库表的抽象表示,包括表名、列名、数据类型和关联等信息。以下是一个模型定义示例:
const { DataTypes } = require('sequelize');
const User = sequelize.define('User', {
name: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
});
查询数据
可以使用模型的 findAll()
方法查询数据,该方法返回符合条件的所有数据。以下是一个查询示例:
User.findAll()
.then((users) => {
console.log(users);
})
.catch((err) => {
console.error('Unable to find users:', err);
});
插入数据
可以使用模型的 create()
方法插入数据,该方法接收一个对象作为参数,并返回插入的数据。以下是一个插入示例:
User.create({ name: 'John', email: 'john@example.com', password: 'password' })
.then((user) => {
console.log(`Created user with ID ${user.id}`);
})
.catch((err) => {
console.error('Unable to create user:', err);
});
更新数据
可以使用模型的 update()
方法更新数据,该方法接收一个对象和一个条件作为参数,并返回更新的行数。以下是一个更新示例:
User.update({ name: 'John Doe' }, { where: { id: 1 } })
.then((result) => {
console.log(`Updated ${result[0]} row(s)`);
})
.catch((err) => {
console.error('Unable to update user:', err);
});
删除数据
可以使用模型的 destroy()
方法删除数据,该方法接收一个条件作为参数,并返回删除的行数。以下是一个删除示例:
User.destroy({ where: { id: 1 } })
.then((result) => {
console.log(`Deleted ${result} row(s)`);
})
.catch((err) => {
console.error('Unable to delete user:', err);
});
总结
Node.js 支持多种关系型数据库,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等。可以使用 mysql 模块和 Sequelize 库来与这些数据库进行交互。在使用 Sequelize 库时,需要先定义模型,然后可以使用模型的方法来进行数据操作。