❤Nodejs 第六章(操作本地数据库前置知识优化)
本文主要是讲一些前置知识、配置和优化处理
配置和优化处理
1、cors (处理接口跨域)
下载cors,用于处理接口跨域问题
yarn add cors //安装cors
import cors from 'cors' //引入
app.use(cors());//使用
2、cors (处理编码数据)
- body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
- cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
- multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
$ yarn add body-parser --save
$ yarn add cookie-parser --save
$ yarn add multer --save
app.js之中我们对数据进行优化处理
引入:
import express from 'express'
import cors from 'cors'
import bodyParser from 'body-parser'
使用
const app = express();
app.use(express.json()); // 中间件,用于解析 POST 请求体中的 JSON 数据
app.use(cors());
app.use(bodyParser.json()); //配置解析,用于解析json和urlencoded格式的数据
app.use(bodyParser.urlencoded({
extended: false}));
3、mysql
数据连接池
Node.js使用mysql
模块与数据库交互的两种主要的连接方式:createPool
和createConnection
。
在Node.js中,mysql
模块通常用于与MySQL数据库进行交互。mysql
模块提供了两种主要的连接方式:createPool
和createConnection
。它们之间的主要区别在于连接的管理方式和性能方面。
(1) createPool:
createPool
方法创建了一个连接池,连接池会在需要时创建多个连接,并在不需要时将连接放回池中,以便重复使用。这种方式适用于大量并发请求的情况,因为它可以有效地管理连接,避免了频繁地创建和销毁连接的开销。- 连接池的大小通常可以配置,以控制同时打开的连接数量,以防止数据库过载。这样可以确保在高负载时系统仍然能够保持稳定。
- 使用连接池时,通过从池中获取连接来执行查询操作,执行完毕后将连接释放回池中,这样可以最大程度地重用连接,提高性能和效率。
示例代码:
javascriptCopy Code
const mysql = require('mysql');
const pool = mysql.createPool({
connectionLimit: 10, // 最大连接数
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_database'
});
pool.getConnection((err, connection) => {
if (err) throw err;
connection.query('SELECT * FROM my_table', (error, results, fields) => {
connection.release(); // 释放连接
if (error) throw error;
console.log(results);
});
});
(2) createConnection:
- `createConnection` 方法每次调用都会创建一个新的数据库连接。这种方式适用于低负载的场景或者在单个请求中只需要少量查询的情况。
- 每次调用`createConnection`都会创建一个新的连接,执行完毕后需要手动关闭连接,否则会造成资源浪费和内存泄漏。
示例代码:
javascriptCopy Code
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_database'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database');
connection.query('SELECT * FROM my_table', (error, results, fields) => {
if (error) throw error;
console.log(results);
connection.end(); // 关闭连接
});
});
总的来说,createPool
适用于高并发的情况,可以有效地管理连接,提高性能和可靠性,而createConnection
适用于低负载的场景或者简单的应用中。