第九章:数据库连接
简要说明
在本章中,我们将学习如何使用Node.js连接和操作数据库。数据库是现代应用程序的核心组件之一,掌握如何在Node.js中与数据库进行交互是开发全栈应用的关键技能。我们将重点介绍如何使用mysql
和mongodb
模块连接数据库,并执行基本的CRUD(创建、读取、更新、删除)操作。此外,我们还将探讨数据库连接池的使用,以提高应用程序的性能和可扩展性。
关键知识点
1. 使用mysql
模块连接MySQL数据库
MySQL是一种流行的关系型数据库管理系统(RDBMS),广泛应用于Web应用程序中。我们将使用mysql
模块来连接和操作MySQL数据库。
安装mysql
模块
首先,我们需要安装mysql
模块:
npm install mysql
连接MySQL数据库
以下是一个简单的示例,展示如何使用mysql
模块连接到MySQL数据库:
const mysql = require('mysql');
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
// 连接数据库
connection.connect((err) => {
if (err) {
console.error('Error connecting to database:', err.stack);
return;
}
console.log('Connected to database with ID:', connection.threadId);
});
// 执行查询
connection.query('SELECT * FROM users', (err, results, fields) => {
if (err) throw err;
console.log('Query results:', results);
});
// 关闭连接
connection.end();
2. 使用mongodb
模块连接MongoDB数据库
MongoDB是一种流行的NoSQL数据库,适用于处理大量非结构化数据。我们将使用mongodb
模块来连接和操作MongoDB数据库。
安装mongodb
模块
首先,我们需要安装mongodb
模块:
npm install mongodb
连接MongoDB数据库
以下是一个简单的示例,展示如何使用mongodb
模块连接到MongoDB数据库:
const { MongoClient } = require('mongodb');
// MongoDB连接URL
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);
// 数据库名称
const dbName = 'mydb';
async function main() {
// 连接数据库
await client.connect();
console.log('Connected successfully to server');
const db = client.db(dbName);
const collection = db.collection('users');
// 插入文档
const insertResult = await collection.insertOne({ name: 'Alice', age: 25 });
console.log('Inserted document:', insertResult.insertedId);
// 查询文档
const findResult = await collection.find({}).toArray();
console.log('Found documents:', findResult);
// 更新文档
const updateResult = await collection.updateOne({ name: 'Alice' }, { $set: { age: 26 } });
console.log('Updated documents:', updateResult.modifiedCount);
// 删除文档
const deleteResult = await collection.deleteOne({ name: 'Alice' });
console.log('Deleted documents:', deleteResult.deletedCount);
// 关闭连接
await client.close();
}
main().catch(console.error);
3. 基本的CRUD操作
无论是使用MySQL还是MongoDB,基本的CRUD操作都是数据库交互的核心。以下是CRUD操作的简要说明:
- Create(创建):向 数据库中插入新数据。
- Read(读取):从数据库中查询数据。
- Update(更新):更新数据库中的现有数据。
- Delete(删除):从数据库中删除数据。
在前面的示例中,我们已经展示了如何在MySQL和MongoDB中执行这些操作。
4. 数据库连接池的使用
在高并发的应用程序中,频繁地创建和关闭数据库连接会导致性能问题。为了解决这个问题,我们可以使用数据库连接池。连接池允许我们在应用程序启动时创建一组数据库连接,并在需要时从池中获取连接,使用完毕后将连接返回到池中,而不是关闭它。
使用mysql
模块的连接池
以下是一个使用mysql
模块连接池的示例:
const mysql = require('mysql');
// 创建连接池
const pool = mysql.createPool({
connectionLimit: 10, // 最大连接数
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
// 从连接池中获 取连接
pool.getConnection((err, connection) => {
if (err) throw err;
// 执行查询
connection.query('SELECT * FROM users', (err, results, fields) => {
// 释放连接
connection.release();
if (err) throw err;
console.log('Query results:', results);
});
});
// 关闭连接池
pool.end();
使用mongodb
模块的连接池
MongoDB的MongoClient
默认使用连接池,因此我们不需要手动管理连接池。只需在需要时调用client.connect()
,并在操作完成后调用client.close()
即可。
总结
在本章中,我们学习了如何使用Node.js连接和操作MySQL和MongoDB数据库。我们探讨了基本的CRUD操作,并介绍了如何使用数据库连接池来提高应用程序的性能。掌握这些技能将使你能够构建功能强大的全栈应用程序。
在下一章中,我们将深入探讨如何使用Express框架构建RESTful API,并与数据库进行交 互。