内容简介:本篇文章讲解了 Node.js 连接 MySQL 与 MongoDB,并实现基本的增删改查功能。这里对安装 MySQL 与 MongoDB 等软件工具不做讲解。首先通过可视化工具进行表的设计,然后添加几条测试数据:
本篇文章讲解了 Node.js 连接 MySQL 与 MongoDB,并实现基本的增删改查功能。
这里对安装 MySQL 与 MongoDB 等软件 工具 不做讲解。
一、MySQL
1、设计表
首先通过可视化工具进行表的设计,然后添加几条测试数据:
2、安装 Node.js 连接 MySQL 的包
npm i mysql -d 复制代码
3、连接 MySQL
MySQL.js
// 引入 mysql 包 const mysql = require('mysql'); // mysql 连接信息 let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'test', port: 3306 }); // 开始链接 connection.connect(); // 查询 info_test 表 connection.query('SELECT * FROM info_test', (error, results, fields) => { if (error) throw error; console.log(results); }); // 终止连接 connection.end(); 复制代码
执行 node MySQL.js,连接成功界面如下:
接下来就该实现增删改查的功能了。
4、数据库操作:增删改查
4.1、增
add.js
const mysql = require('mysql'); let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'test', port: 3306 }); connection.connect(); // 设置 SQL 插入语句 let addSql = 'INSERT INTO info_test(id,name,age) VALUES(0,?,?)'; // 插入数据 let addSqlParams = ['zhao', '18']; // 链接 SQL 并实施语句 connection.query(addSql, addSqlParams, (error, response) => { if (error) { console.log("新增失败!"); console.log(error); return; } else { console.log("新增成功!"); console.log(response); }; }); connection.end(); 复制代码
执行 node add.js
刷新 Navicat,会看到新添加了一条数据。
4.2、删
delete.js
const mysql = require('mysql'); let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'test', port: 3306 }); connection.connect(); // 设置 SQL 删除语句 let delSql = 'DELETE FROM info_test where id=0'; connection.query(delSql, (error, response) => { if (error) { console.log("删除失败!"); console.log(error); return; } else { console.log("删除成功!"); console.log(response); }; }); connection.end(); 复制代码
执行 node delete.js
刷新 Navicat,会看到 id 为 0 的那条数据被删除了。
4.3、改
update.js
const mysql = require('mysql'); let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'test', port: 3306 }); connection.connect(); // 设置 SQL 修改语句 let updateSql = 'UPDATE info_test SET name = ?,age = ? WHERE ID = ?'; // 要修改的数据 let updateSqlParams = ['Wang', '18', 1]; connection.query(updateSql, updateSqlParams, (error, response) => { if (error) { console.log("删除失败!"); console.log(error); return; } else { console.log("删除成功!"); console.log(response); }; }); connection.end(); 复制代码
执行 node update.js
刷新 Navicat,会看到 id 为 1 的那条数据被修改了。
4.4、查
read.js
const mysql = require('mysql'); let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'test', port: 3306 }); connection.connect(); // 设置 SQL 修改语句 let readSql = 'SELECT * FROM info_test'; connection.query(readSql, (error, response) => { if (error) { console.log("查询失败!"); console.log(error); return; } else { console.log("查询成功!"); console.log(response); }; }); connection.end(); 复制代码
执行 node read.js
二、MongoDB
1、安装 mongodb 包
npm install mongodb --save
2、创建数据库
要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 和 端口号。
如果数据库不存在,MongoDB 将创建数据库并建立连接,例如我们创建一个 test 数据库:
MongoDB.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("数据库已创建!"); db.close(); }); 复制代码
3、创建集合
我们可以使用 createCollection() 方法来创建集合:
修改 MongoDB.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function (err, db) { if (err) throw err; console.log('数据库已创建'); var dbase = db.db("test"); dbase.createCollection('info_test', function (err, res) { if (err) throw err; console.log("创建集合 info_test!"); db.close(); }); }); 复制代码
如果你有 MongoDB 的可视化工具,例如:Studio 3T,那么你就可以看到刚刚创建的数据库 test 和 集合(表) info_test 了。
4、数据库操作:增删改查
与 MySQL 不同的是 MongoDB 会自动创建数据库和集合,所以使用前我们不需要手动去创建。
4.1、增
- 插入一条数据:insertOne();
- 插入多条数据:insertMany()。
以下实例我们连接数据库 test 的 info_test 表,并插入一条数据,使用 insertOne():
add.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); var user = { name: "Liu", age: "24" }; dbo.collection("info_test").insertOne(user, function(err, res) { if (err) throw err; console.log("数据插入成功!"); db.close(); }); }); 复制代码
如果没有安装可视化工具,我们也可以打开 MongoDB 的客户端查看数据,如:
接下来我们使用 insertMany() 来插入多条数据。
add.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); var user = [{ name: "Zhao", age: "25" }, { name: "Sun", age: "18" }, { name: "Du", age: "23" }]; dbo.collection("info_test").insertMany(user, function(err, res) { if (err) throw err; console.log("插入" + res.insertedCount + "条数据成功!"); db.close(); }); }); 复制代码
4.2、删
- 删除一条数据:deleteOne();
- 删除多条数据:deleteMany()。
将 name 为 "Sun" 的数据删除:
delete.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询条件 var whereStr = { "name": "Sun" }; dbo.collection("info_test").deleteOne(whereStr, function(err, res) { if (err) throw err; console.log("数据删除成功!"); db.close(); }); }); 复制代码
将 age 为 23 的数据都删除:
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询条件 var whereStr = { age: "23" }; dbo.collection("info_test").deleteMany(whereStr, function(err, res) { if (err) throw err; console.log(res.result.n + " 条文档被删除"); db.close(); }); }); 复制代码
4.3、改
- 修改一条数据:updateOne();
- 修改多条数据:updateMany()。
将 name 为 Liu 的 age 值改为 18:
update.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询条件 var whereStr = { "name": "Liu" }; // 修改为: var updateStr = { $set: { "age": "18" } }; dbo.collection("info_test").updateOne(whereStr, updateStr, function(err, res) { if (err) throw err; console.log("数据修改成功!"); db.close(); }); }); 复制代码
修改多条数据,将 age 为 18 的数据 name 值改为 Wang:
update.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询条件 var whereStr = { "age": "18" }; // 修改为: var updateStr = { $set: { "name": "Wang" } }; dbo.collection("info_test").updateMany(whereStr, updateStr, function(err, res) { if (err) throw err; console.log(res.result.nModified + "条数据修改成功!"); db.close(); }); }); 复制代码
4.4、查
可以使用 find() 来查找数据, find() 可以返回匹配条件的所有数据,如果未指定条件,find() 返回集合中的所有数据。
read.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询所有数据 dbo.collection("info_test").find({}).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); 复制代码
带条件查询,查询所有 age 为 18 的数据:
update.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 查询条件 var whereStr = { "age": "18" } dbo.collection("info_test").find(whereStr).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); 复制代码
4.5、排序
使用 sort() 方法,该方法接受一个参数,规定是升序(1)还是降序(-1)。
例如按照 age 值从小到大排序:
sort.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); // 排序条件 var mySort = { "age": 1 } dbo.collection("info_test").find().sort(mySort).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); 复制代码
4.6、查询分页
如果要设置指定的返回条数可以使用 limit() 方法,该方法只接受一个参数,指定了返回的条数。
先来看一下 info_test 表中数据情况:
limit.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); dbo.collection("info_test").find().limit(2).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); 复制代码
如果要指定跳过的条数,可以使用 skip() 方法。
skip.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); dbo.collection("info_test").find().skip(2).limit(2).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); 复制代码
4.7、连接操作
mongoDB 不是一个关系型数据库,但我们可以使用 $lookup 来实现左连接。
例如我们有两个集合数据分别为:
集合1:orders
[ { _id: 1, product_id: 154, status: 1 } ] 复制代码
集合2:products
[ { _id: 154, name: '笔记本电脑' }, { _id: 155, name: '耳机' }, { _id: 156, name: '台式电脑' } ] 复制代码
$lookup 实现左连接
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); dbo.collection('orders').aggregate([{ $lookup: { from: 'products', // 右集合 localField: 'product_id', // 左集合 join 字段 foreignField: '_id', // 右集合 join 字段 as: 'orderdetails' // 新生成字段(类型array) } }]).toArray(function(err, res) { if (err) throw err; console.log(JSON.stringify(res)); db.close(); }); }); 复制代码
4.8、删除集合
我们可以使用 drop() 方法来删除集合:
drop.js
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("test"); dbo.collection("info_test").drop(function(err, delOK) { if (err) throw err; if (delOK) console.log("集合删除成功!"); db.close(); }); }); 复制代码
以上所述就是小编给大家介绍的《10_Node js 连接 MySQL 与 MongoDB》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- tcp 长连接与短连接
- 没有 HTTP 连接池,空谈什么持久连接
- Linux中软连接和硬连接的区别
- sql – 哪个更好..左外连接还是右外连接?
- 连接池中的连接失效的几种处理方案
- 解决golang使用elastic连接elasticsearch时自动转换连接地址
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unix/Linux编程实践教程
Bruce Molay、杨宗源、黄海涛 / 杨宗源、黄海涛 / 清华大学出版社 / 2004-10-1 / 56.00元
操作系统是计算机最重要的系统软件。Unix操作系统历经了几十年,至今仍是主流的操作系统。本书通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。书中采用启发式、举一反三、图示讲解等多种方法讲授,语言生动、结构合理、易于理解。每一章后均附有大量的习题和编程练习,以供参考。 本书适合作为高等院校计算机及......一起来看看 《Unix/Linux编程实践教程》 这本书的介绍吧!