聊聊nodejs mysql版本
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!
在 Node.js 中,操作 MySQL 数据库的常用库主要有以下几种,它们的功能各异,适合不同的使用场景:
1. mysql
- 版本:最新的版本为
2.x
,但官方已不再进行积极维护。 - 特点:这是最早期且最基础的 Node.js MySQL 驱动,提供了简洁的 API 接口。适合基本的数据库操作,但不支持 Promise 和异步操作(可以通过回调函数实现异步处理)。
- 用法:
npm install mysql
const mysql = require('mysql'); const connection = mysql.createConnection({host: 'localhost',user: 'root',password: '',database: 'test' });connection.connect();connection.query('SELECT * FROM users', (error, results, fields) => {if (error) throw error;console.log(results); });connection.end();
2. mysql2
- 版本:当前版本为
3.x
。 - 特点:
mysql2
是mysql
模块的升级版,提供了更好的性能。- 支持 Promises,可以与现代异步模式(
async
/await
)配合使用。 - 支持 Prepared Statements,能够提升安全性并防止 SQL 注入。
- 用法:
npm install mysql2
const mysql = require('mysql2/promise');async function queryDatabase() {const connection = await mysql.createConnection({host: 'localhost', user: 'root', database: 'test'});const [rows, fields] = await connection.execute('SELECT * FROM users');console.log(rows); }queryDatabase();
3. sequelize
- 版本:当前版本为
6.x
。 - 特点:
Sequelize
是一个基于 Node.js 的 **ORM(对象关系映射)**库,支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库。- 它抽象了数据库表,允许你使用 JavaScript 对象操作数据库,适合更复杂的数据模型和操作场景。
- 支持关系映射、事务、关联、同步和迁移等高级功能。
- 用法:
npm install sequelize mysql2
const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('test', 'root', '', {host: 'localhost',dialect: 'mysql' });const User = sequelize.define('User', {name: {type: DataTypes.STRING,allowNull: false} });async function syncAndQuery() {await sequelize.sync();const users = await User.findAll();console.log(users); }syncAndQuery();
4. knex
- 版本:当前版本为
2.x
。 - 特点:
Knex
是一个 SQL 查询生成器,不具备完整的 ORM 功能,但可以用于创建复杂 SQL 查询。- 支持多种数据库(MySQL、PostgreSQL、SQLite 等)。
- 提供链式查询语法,适合在项目中灵活地生成 SQL 语句。
- 用法:
npm install knex mysql2
const knex = require('knex')({client: 'mysql2',connection: {host: 'localhost',user: 'root',password: '',database: 'test'} });knex('users').select('*').then((rows) => {console.log(rows); });
总结
mysql
:基础、简单,适合基本需求,但不支持 Promise 和现代异步写法。mysql2
:mysql
的升级版,支持 Promise 和更高效的功能,适合大部分使用场景。sequelize
:一个功能丰富的 ORM 库,适合需要对象关系映射和复杂数据模型的项目。knex
:轻量的 SQL 查询生成器,灵活用于构建复杂的查询,适合高级用户。
如果你的项目需要更现代的异步操作和更高的灵活性,推荐使用 mysql2
;如果你希望使用 ORM 进行更高层次的抽象操作,sequelize
是更好的选择。
… …
文末
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
… …
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。