欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js查詢MySQL并返回結(jié)果集給客戶端的全過(guò)程

 更新時(shí)間:2022年12月27日 15:40:21   作者:JV_32  
nodejs最大的優(yōu)勢(shì)也是大家用著最為難以理解的一點(diǎn),就是它的異步功能,它幾乎所有的io操作都是異步的,這也就導(dǎo)致很多人不理解也用不習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于Node.js查詢MySQL并返回結(jié)果集給客戶端的相關(guān)資料,需要的朋友可以參考下

前言

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)文章

  • electron安裝報(bào)錯(cuò)終極解決辦法詳細(xì)講解

    electron安裝報(bào)錯(cuò)終極解決辦法詳細(xì)講解

    當(dāng)使用npm安裝electron時(shí),有時(shí)候會(huì)遇到各種各樣的錯(cuò)誤,如網(wǎng)絡(luò)錯(cuò)誤、權(quán)限錯(cuò)誤等等,這篇文章主要給大家介紹了關(guān)于electron安裝報(bào)錯(cuò)終極解決辦法的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • node.js?http模塊概念詳解

    node.js?http模塊概念詳解

    http?模塊是?Node.js?官方提供的、用來(lái)創(chuàng)建?web?服務(wù)器的模塊。通過(guò)?http?模塊提供的http.createServer()?方法,就能方便的把一臺(tái)普通的電腦,變成一臺(tái)?Web?服務(wù)器,從而對(duì)外提供?Web?資源服務(wù),本文給大家介紹node.js?http模塊的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-01-01
  • 從零學(xué)習(xí)node.js之利用express搭建簡(jiǎn)易論壇(七)

    從零學(xué)習(xí)node.js之利用express搭建簡(jiǎn)易論壇(七)

    這篇文章主要介紹了node.js利用express搭建簡(jiǎn)易論壇的方法,我們需要搭建的這個(gè)簡(jiǎn)易的論壇主要的功能有:注冊(cè)、登錄、發(fā)布主題、回復(fù)主題。下面我們來(lái)一步步地講解這個(gè)系統(tǒng)是如何實(shí)現(xiàn)的,需要的朋友可以參考借鑒。
    2017-02-02
  • 使用node.js中的Buffer類處理二進(jìn)制數(shù)據(jù)的方法

    使用node.js中的Buffer類處理二進(jìn)制數(shù)據(jù)的方法

    大家應(yīng)該都知道在客戶端JavaScript腳本代碼中,對(duì)二進(jìn)制數(shù)據(jù)并沒(méi)有提供一個(gè)很好的支持。然而,在處理TCP流或文件流時(shí),必須要處理二進(jìn)制數(shù)據(jù)。因此,下面通過(guò)這篇文章來(lái)一起看看利用node.js中的Buffer類處理二進(jìn)制數(shù)據(jù)的方法,有需要的朋友們可以參考借鑒。
    2016-11-11
  • 快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán)的方法

    快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán)的方法

    這篇文章主要介紹了快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Node.js和Express簡(jiǎn)單入門介紹

    Node.js和Express簡(jiǎn)單入門介紹

    本篇文章主要介紹了Node.js和Express簡(jiǎn)單入門介紹,詳細(xì)介紹如何用Node.js和Express搭建一個(gè)web服務(wù)器,有興趣的可以了解一下。
    2017-03-03
  • 詳解Node.js開(kāi)發(fā)中的express-session

    詳解Node.js開(kāi)發(fā)中的express-session

    express-session?是基于express框?qū)iT用于處理session的中間件,本篇文章主要介紹了詳解Node.js開(kāi)發(fā)中的express-session,有興趣的可以了解一下<BR>
    2017-05-05
  • nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    本文給大家講解的是簡(jiǎn)單的使用nodejs搭建郵件發(fā)送服務(wù)的一個(gè)實(shí)例,非常的好用,有需要的小伙伴可以參考下
    2017-03-03
  • 詳解Node.js模板引擎Jade入門

    詳解Node.js模板引擎Jade入門

    這篇文章主要介紹了詳解Node.js模板引擎Jade入門,Jade是Node.js的一個(gè)模板引擎,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • node.js如何充分利用多核cpu

    node.js如何充分利用多核cpu

    這篇文章主要介紹了node.js如何充分利用多核cpu,想了解node.js的同學(xué),可以參考下
    2021-04-04

最新評(píng)論