使用Node操作MySQL的两种方式

 更新时间:2024年05月13日 08:31:18   作者:云牧  
本文将介绍如何在 Node.js 应用中使用 mysql2 和 TypeORM 两种方式操作 MySQL 数据库,文中通过代码示例介绍的非常详细,对大家的学习有一定的帮助,需要的朋友可以参考下

使用 mysql2 库操作 MySQL

mysql2 是 mysql 库的升级版,提供了更多特性,并且支持 Promise API。以下是使用 mysql2 进行数据库操作的基本步骤:

安装和配置

创建项目目录,初始化 npm,并安装 mysql2:

mkdir myproject
cd myproject
npm init -y
npm install --save mysql2

创建 index.js 文件,并配置数据库连接:

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));
});

插入数据

connection.execute('INSERT INTO customers (name) VALUES (?)', ['Zhang'], (err, results) => {
  if (err) throw err;
  console.log('Insert successful');
});

更新数据

connection.execute('UPDATE customers SET name="Li" WHERE name="Zhang"', (err) => {
  if (err) throw err;
  console.log('Update successful');
});

删除数据

connection.execute('DELETE FROM customers WHERE name="Li"', (err) => {
  if (err) throw err;
  console.log('Delete successful');
});

使用连接池提高性能

连接池可以管理多个数据库连接,提高应用性能和响应速度:

const mysql = require('mysql2/promise');

(async () => {
  const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'your_password',
    database: 'practice',
    waitForConnections: true, // 如果没有可用连接,等待而不是立即抛出错误
    connectionLimit: 10, // 连接池中最大连接数
    queueLimit: 0 // 最大排队数量,0表示不限制
  });

  const [results] = await pool.query('SELECT * FROM customers');
  console.log(results);
})();

使用 TypeORM 框架操作 MySQL

TypeORM 是一个基于 TypeScript 的 ORM (对象关系映射) 框架,它可以让开发者通过操作对象而不是 SQL 语句来处理数据库。

项目设置

创建并配置新项目:

npx typeorm@latest init --name typeorm-mysql-test --database mysql

在 data-source.ts 中配置数据库:

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'
});

操作数据库

使用装饰器定义模型(Entity):

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

插入和查询数据

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);
});

优点

使用 ORM 框架可以大大简化数据库操作,使代码更加直观和易于维护。同时,TypeORM 提供了强大的数据模型管理功能,支持自动创建表、生成 SQL 语句等。

到此这篇关于使用Node操作MySQL的两种方式的文章就介绍到这了,更多相关Node操作MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pm2发布node配置文件ecosystem.json详解

    pm2发布node配置文件ecosystem.json详解

    这篇文章主要介绍了pm2发布node配置文件ecosystem.json详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • vscode无法运行npm命令的问题解决(cmd可行)

    vscode无法运行npm命令的问题解决(cmd可行)

    本文主要介绍了vscode无法运行npm命令的问题解决(cmd可行),VSCode无法调用npm可能是因为环境路径配置错误,下面就来具体介绍一下原因及解决方法,感兴趣的可以了解一下
    2024-04-04
  • Nodejs使用winston进行日志记录详解

    Nodejs使用winston进行日志记录详解

    在生产环境中,更常见的做法是使用专门的日志记录库,如winston、log4js等,来实现更灵活和可配置的日志记录功能,本篇文章将介绍的是winston的强大的日志记录功能,快跟随小编一起学习一下吧
    2024-01-01
  • node.js中的path.resolve方法使用说明

    node.js中的path.resolve方法使用说明

    这篇文章主要介绍了node.js中的path.resolve方法使用说明,本文介绍了path.resolve的方法说明、接收参数、语法、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js打包管理工具NPM用法

    Node.js打包管理工具NPM用法

    这篇文章介绍了Node.js打包管理工具NPM的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Centos7 中安装 Node.js v4.4.4

    Centos7 中安装 Node.js v4.4.4

    我一直对学习Node.js比较感兴趣。这是一个Java平台的服务器端编程 ,它允许开发人员在服务器编写Java代码,并且有许多CentOS的用户正努力学习这个语言的开发环境。这正是我想做这个教程的目的。
    2016-11-11
  • NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法

    NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法

    这篇文章主要介绍了NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)

    Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)

    这篇文章主要介绍了Nodejs使用archiver-zip-encrypted库加密压缩文件时报错,朋友朋友在测试过程中都出现过异常,下面小编把问题过程分析脚本之家平台,需要的朋友可以参考下
    2019-11-11
  • nodejs log4js 使用详解

    nodejs log4js 使用详解

    这篇文章主要介绍了nodejs log4js 使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • yarn install命令报错warning package-lock.json found解决办法

    yarn install命令报错warning package-lock.json found解决办法

    这篇文章主要给大家介绍了关于yarn install命令报错warning package-lock.json found的解决办法,文中通过图文将解决的办法介绍的非常详细,还分享了更多yarn install遇到的报错及解决方案,需要的朋友可以参考下
    2024-02-02

最新评论