Node.js查詢MySQL并返回結(jié)果集給客戶端的全過(guò)程
前言
mysql模塊 + Express框架 + 原始Ajax請(qǐng)求,實(shí)現(xiàn)Node對(duì)MySQL數(shù)據(jù)庫(kù)表的查詢,并將結(jié)果集返回給客戶端
一、mysql模塊
(1)Node想要操作MySQL數(shù)據(jù)庫(kù),需要安裝第三方mysql模塊:npm i mysql
(2)通過(guò)mysql的 createPool 方法連接到MySQL數(shù)據(jù)庫(kù)
connDB.js
// 1.導(dǎo)入mysql模塊
const mysql = require('mysql');
// 2.建立連接
const db = mysql.createPool({
host: '127.0.0.1', // 數(shù)據(jù)庫(kù) IP 地址
user: 'root', // 賬號(hào)
password: '******', // 密碼
database: 'my_db_01' // 指定要操作哪個(gè)數(shù)據(jù)庫(kù)
})
(3)導(dǎo)出獲取到連接的對(duì)象
module.exports = db;
二、操作MySQL數(shù)據(jù)庫(kù)
1.配置Express路由模塊
編寫Express路由模塊,處理客戶端的GET請(qǐng)求
routerModule.js
const express = require('express');
const db = require('./connDB'); // 導(dǎo)入獲取到MySQL連接的對(duì)象
const router = express.Router(); // express.Router() 創(chuàng)建路由對(duì)象
// 查詢數(shù)據(jù)庫(kù) users 表中所有數(shù)據(jù),并響應(yīng)給客戶端
function showMsg(req, res) {
const sqlStr = 'select * from users'; // 查詢SQL語(yǔ)句
db.query(sqlStr, (err, results) => {
if (err) return err.message;
res.send(results); // 將查詢結(jié)果響應(yīng)給客戶端
})
}
router.get('/showInfo', showMsg); // 在路由對(duì)象上配置具體路由,處理 GET 請(qǐng)求
module.exports = router; // 導(dǎo)出路由模塊
注:若使用res.end()響應(yīng)數(shù)據(jù),需要將數(shù)據(jù)轉(zhuǎn)化為Json字符串res.end(JSON.stringify(results)), 如果方法傳入一個(gè)對(duì)象,會(huì)發(fā)生錯(cuò)誤。一般建議使用 res.send()方法即可,這樣就不需要關(guān)心響應(yīng)數(shù)據(jù)的格式,因?yàn)?Express 內(nèi)部對(duì)數(shù)據(jù)進(jìn)行了處理。
2.創(chuàng)建Web服務(wù)器
通過(guò)Express創(chuàng)建簡(jiǎn)單的Web服務(wù)器,為客戶端提供請(qǐng)求的接口
server.js
const express = require('express');
const router = require('./routerModule'); // 導(dǎo)入路由模塊
const cors = require('cors'); // 導(dǎo)入cors模塊,解決跨域
const app = express();
app.use(cors()); // 配置 cors 中間件,解決接口跨域問(wèn)題
app.use(router); // 加載路由中間件
app.listen(80, () => {
console.log('服務(wù)器啟動(dòng)成功!');
})
注:瀏覽器的同源安全策略會(huì)阻止網(wǎng)頁(yè)“跨域”獲取資源,CORS由一系列HTTP響應(yīng)頭組成,這些HTTP響應(yīng)頭決定瀏覽器是否阻止前端JS代碼跨域獲取資源,所以我們需要在接口服務(wù)器配置CORS,就可以阻止瀏覽器端的跨域訪問(wèn)限制。
3.請(qǐng)求數(shù)據(jù)
在客戶端通過(guò)基礎(chǔ)的Ajax請(qǐng)求四部曲,請(qǐng)求數(shù)據(jù)
<body>
<button>點(diǎn)我獲取數(shù)據(jù)庫(kù)數(shù)據(jù)</button>
<script>
const btn = document.querySelector('button');
btn.onclick = function () {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'http://127.0.0.1/showInfo');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status <= 300) {
console.log(JSON.parse(xhr.response)); // 通過(guò)JSON.parse將數(shù)據(jù)轉(zhuǎn)化為JavaScript對(duì)象
}
}
}
}
</script>
</body>
請(qǐng)求結(jié)果:

總結(jié)
本章闡述了簡(jiǎn)單使用Node連接MySQL數(shù)據(jù)庫(kù)并且操作數(shù)據(jù)庫(kù),最終將結(jié)果集返回給客戶端的步驟,具有一定的模塊化思想,如有錯(cuò)誤或不足,望斧正。
到此這篇關(guān)于Node.js查詢MySQL并返回結(jié)果集給客戶端的文章就介紹到這了,更多相關(guān)Node.js查詢MySQL返回結(jié)果集內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Express 配置HTML頁(yè)面訪問(wèn)的實(shí)現(xiàn)
這篇文章主要介紹了Express 配置HTML頁(yè)面訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
關(guān)于node.js版本npm -v報(bào)錯(cuò)問(wèn)題的解決方法
最近工作中遇到了些問(wèn)題,這里總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于node.js版本npm -v報(bào)錯(cuò)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了node.js批量下載圖片的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01
使用Node.js創(chuàng)建本地HTTP服務(wù)器并實(shí)現(xiàn)異地遠(yuǎn)程訪問(wèn)的方法
Node.js 是能夠在服務(wù)器端運(yùn)行 JavaScript 的開(kāi)放源代碼、跨平臺(tái)運(yùn)行環(huán)境,這篇文章主要介紹了如何使用Node.js快速創(chuàng)建本地HTTP服務(wù)器并實(shí)現(xiàn)異地遠(yuǎn)程訪問(wèn),需要的朋友可以參考下2024-01-01
nodejs 中模擬實(shí)現(xiàn) emmiter 自定義事件
這篇文章主要介紹了Nodejs中自定義事件實(shí)例,比較簡(jiǎn)單的一個(gè)例子,需要的朋友可以參考下。2016-02-02
node.js中 cluster 模塊和 worker_threads 模塊示例
這篇文章主要介紹了node.js中 cluster 模塊和 worker_threads 模塊,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
淺談Node.js CVE-2017-14849 漏洞分析(詳細(xì)步驟)
這篇文章主要介紹了淺談Node.js CVE-2017-14849 漏洞分析(詳細(xì)步驟),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

