NodeJS教程

MySQL 关系型数据库和 NPM 中 Sequelize 库

Preview
  • Node.js MySQL 关系型数据库和 NPM 中 Sequelize 库
  • MySQL 关系型数据库
  • 安装和连接 MySQL 数据库
  • 查询数据
  • 插入数据
  • 更新数据
  • 删除数据
  • Sequelize 库
  • 安装和连接 Sequelize 库
  • 定义模型
  • 查询数据
  • 插入数据
  • 更新数据
  • 删除数据
  • 总结

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 库时,需要先定义模型,然后可以使用模型的方法来进行数据操作。