使用Node操作MySQL的兩種方式
使用 mysql2 庫操作 MySQL
mysql2 是 mysql 庫的升級版,提供了更多特性,并且支持 Promise API。以下是使用 mysql2 進(jìn)行數(shù)據(jù)庫操作的基本步驟:
安裝和配置
創(chuàng)建項(xiàng)目目錄,初始化 npm,并安裝 mysql2:
mkdir myproject cd myproject npm init -y npm install --save mysql2
創(chuàng)建 index.js 文件,并配置數(shù)據(jù)庫連接:
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
password: 'your_password',
database: 'practice'
});
基本操作
查詢操作
connection.query('SELECT * FROM customers', (err, results, fields) => {
if (err) throw err;
console.log(results);
console.log(fields.map(item => item.name));
});
插入數(shù)據(jù)
connection.execute('INSERT INTO customers (name) VALUES (?)', ['Zhang'], (err, results) => {
if (err) throw err;
console.log('Insert successful');
});
更新數(shù)據(jù)
connection.execute('UPDATE customers SET name="Li" WHERE name="Zhang"', (err) => {
if (err) throw err;
console.log('Update successful');
});
刪除數(shù)據(jù)
connection.execute('DELETE FROM customers WHERE name="Li"', (err) => {
if (err) throw err;
console.log('Delete successful');
});
使用連接池提高性能
連接池可以管理多個(gè)數(shù)據(jù)庫連接,提高應(yīng)用性能和響應(yīng)速度:
const mysql = require('mysql2/promise');
(async () => {
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'practice',
waitForConnections: true, // 如果沒有可用連接,等待而不是立即拋出錯(cuò)誤
connectionLimit: 10, // 連接池中最大連接數(shù)
queueLimit: 0 // 最大排隊(duì)數(shù)量,0表示不限制
});
const [results] = await pool.query('SELECT * FROM customers');
console.log(results);
})();
使用 TypeORM 框架操作 MySQL
TypeORM 是一個(gè)基于 TypeScript 的 ORM (對象關(guān)系映射) 框架,它可以讓開發(fā)者通過操作對象而不是 SQL 語句來處理數(shù)據(jù)庫。
項(xiàng)目設(shè)置
創(chuàng)建并配置新項(xiàng)目:
npx typeorm@latest init --name typeorm-mysql-test --database mysql
在 data-source.ts 中配置數(shù)據(jù)庫:
import { DataSource } from 'typeorm';
import { User } from './entity/User';
export const AppDataSource = new DataSource({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'your_password',
database: 'practice',
synchronize: true,
entities: [User],
connectorPackage: 'mysql2'
});
操作數(shù)據(jù)庫
使用裝飾器定義模型(Entity):
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
插入和查詢數(shù)據(jù)
import { AppDataSource } from './data-source';
import { User } from './entity/User';
AppDataSource.initialize().then(async () => {
const user = new User();
user.name = 'Wang';
await AppDataSource.manager.save(user);
const users = await AppDataSource.manager.find(User);
console.log(users);
});
優(yōu)點(diǎn)
使用 ORM 框架可以大大簡化數(shù)據(jù)庫操作,使代碼更加直觀和易于維護(hù)。同時(shí),TypeORM 提供了強(qiáng)大的數(shù)據(jù)模型管理功能,支持自動(dòng)創(chuàng)建表、生成 SQL 語句等。
到此這篇關(guān)于使用Node操作MySQL的兩種方式的文章就介紹到這了,更多相關(guān)Node操作MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)
這篇文章主要介紹了三步教你用Node做一個(gè)微信哄女友神器(面向小白),用node和wechaty微信網(wǎng)頁接口開發(fā)的一款小工具,可以定時(shí)給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句,通過配置機(jī)器人api后還可以實(shí)現(xiàn)微信機(jī)器人自動(dòng)陪女朋友聊天,需要的朋友可以參考下2019-06-06
基于Nodejs利用socket.io實(shí)現(xiàn)多人聊天室
這篇文章講述了websocket無到有,根據(jù)協(xié)議,分析數(shù)據(jù)幀的頭,進(jìn)行構(gòu)建websocket。雖然代碼短,但可以很好地體現(xiàn)websocket的原理。對nodejs利用socket 實(shí)現(xiàn)多人聊天室功能感興趣的朋友一起看看吧2017-02-02
nodejs實(shí)現(xiàn)的簡單web服務(wù)器功能示例
這篇文章主要介紹了nodejs實(shí)現(xiàn)的簡單web服務(wù)器功能,結(jié)合實(shí)例形式分析了nodejs構(gòu)建web服務(wù)器的相關(guān)監(jiān)聽、響應(yīng)、數(shù)據(jù)處理等操作技巧,需要的朋友可以參考下2018-03-03

