最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解

 更新時(shí)間:2023年01月13日 14:48:22   作者:是乃德也是Ned  
這篇文章主要為大家介紹了開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

最近在寫畢設(shè),采用的是學(xué)弟+自己的技術(shù)棧,運(yùn)用Vue3+ElementPlus搞前端,Node.js express做后端,畢竟,java那東西確實(shí)不在我技術(shù)棧里。

于是乎,我抱著能CV就不要自己敲的心態(tài),前去了某C站,C回了一個(gè)封裝好了看上去存在可用性的基礎(chǔ)sql模塊,結(jié)果,踩了大坑。

痛定思痛,我采用了學(xué)弟+騰訊會(huì)議的debug方式,于事發(fā)當(dāng)天下午,花費(fèi)了一個(gè)小時(shí),成功搭建出了一個(gè)簡單易用,小學(xué)難度的一個(gè)操作數(shù)據(jù)庫的小模塊。

領(lǐng)略過下雨的痛,所以勇敢站出來為別人打傘,如果你只是想單純的用他做一些簡單的東西,那么大膽用,CV用!

正文

項(xiàng)目目錄

只是單獨(dú)把數(shù)據(jù)庫模塊拎出來了

├─index.js
├─db
| ├─db.js //封裝的操作函數(shù)
| ├─dbconfig.js //數(shù)據(jù)庫配置
| └sql.js  //sql語句

sql.js

主要是存放一些操作表的sql語句,這里只是放了一個(gè)表,多個(gè)表也可以~

//單純的栗子
let user = {
  insert: "INSERT INTO user(id, name, age) VALUES(?,?,?)",
  update: "UPDATE user SET name=?, age=? WHERE id=?",
  delete: "DELETE FROM user WHERE id=?",
  queryById: "SELECT * FROM user WHERE id=?",
  queryAll: "SELECT * FROM user",
};
module.exports = {
  user,
};

dbconfig.js

數(shù)據(jù)庫的配置,服務(wù)器上的就寫服務(wù)器的,本地的就寫本地的,都可以都可以

let mysqlConfig = {
    host: "1.2.3.4",
    user: "******",
    password: "******",
    port: "******",
    database: "******",
  };
module.exports = mysqlConfig

db.js

先引入

const mysql = require("mysql");
const $dbConfig = require("./dbconfig.js"); //注意改成自己項(xiàng)目中的路徑
const sql = require("./sql.js"); 
const pool = mysql.createPool($dbConfig); // 使用連接池

let dbAdd = (table, req, res, next) => {
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      let paramValue = paramList(req);
      connection.query(sql[table].insert, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

let dbDelete = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].delete, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

let dbUpdate = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].update, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

查一個(gè)

let dbQueryById = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].queryById, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

查全部

let dbQueryAll = (table, req, res, next) => {
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].queryAll, (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

paramList

connection.query的第二個(gè)參數(shù)要求傳數(shù)組,為了怕bug,將傳入的對(duì)象給他變成一個(gè)數(shù)組返回回去 示例:mysqljs-https://github.com/mysqljs/mysql#custom-format

let paramList = (obj) => {
  let paramArr = [];
  for (let key in obj) {
    if (obj[key]) {
      paramArr.push(obj[key]);
    }
  }
  return paramArr;
};

如何使用

下面移步到index.js,引入我就不在寫一次了,大家自己引入就好。

app.post("/login",async (req,res) =>{
  const {username,password} = req.body // 接收數(shù)據(jù)
    try {
       //看這里, 我們使用username的方式去數(shù)據(jù)庫進(jìn)行用戶查找
      const {data} = await db.dbQueryById("user",{"username":username},res)
      // 接下來自己想象吧
    } catch (err) {
      res.json({
        code: "500",
        msg: "用戶不存在"
      });
    }
})

搞定

再次吐槽一下,去百度各種搜,查閱時(shí)候的痛苦,以上就是開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Node.js+Mysql模塊封裝的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • node.JS md5加密中文與php結(jié)果不一致的解決方法

    node.JS md5加密中文與php結(jié)果不一致的解決方法

    本篇文章主要介紹了node.JS md5加密中文與php結(jié)果不一致的解決方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05
  • 淺談Node.js:理解stream

    淺談Node.js:理解stream

    本篇文章主要介紹了Node.js:stream,Stream在node.js中是一個(gè)抽象的接口,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-12-12
  • 如何解決安裝websocket還是報(bào)錯(cuò)Cannot find module'ws'問題

    如何解決安裝websocket還是報(bào)錯(cuò)Cannot find module'ws&apos

    這篇文章主要介紹了如何解決安裝websocket還是報(bào)Cannot find module'ws'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Node中對(duì)非阻塞I/O、事件循環(huán)的知識(shí)點(diǎn)總結(jié)

    Node中對(duì)非阻塞I/O、事件循環(huán)的知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Node中對(duì)非阻塞I/O、事件循環(huán)的知識(shí)點(diǎn)分享內(nèi)容,需要的朋友們可以參考下。
    2020-01-01
  • nodejs如何將高版本降為低版本

    nodejs如何將高版本降為低版本

    在遇到項(xiàng)目依賴低版本Node.js時(shí),直接安裝低版本可能會(huì)遇到困難,本文提供了一種通過卸載當(dāng)前高版本Node.js并使用NVM(Node Version Manager)來管理和安裝低版本Node.js的方法,首先,需要卸載現(xiàn)有的Node.js環(huán)境并清理相關(guān)文件
    2024-10-10
  • 淺談Node 調(diào)試工具入門教程

    淺談Node 調(diào)試工具入門教程

    這篇文章主要介紹了淺談Node 調(diào)試工具入門教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Node.js 使用 cors 中間件解決跨域問題小結(jié)

    Node.js 使用 cors 中間件解決跨域問題小結(jié)

    cors 是 Express 的一個(gè)第三方中間件,通過安裝和配置 cors 中間件,可以很方便地解決跨域問題,本文介紹Node.js 使用 cors 中間件解決跨域問題,感興趣的朋友一起看看吧
    2024-01-01
  • node.js中module.exports與exports用法上的區(qū)別

    node.js中module.exports與exports用法上的區(qū)別

    Node.js 引入了模塊(Module)概念,一個(gè)模塊可以通過module.exports 或 exports 將函數(shù)、變量等導(dǎo)出,以使其它 JavaScript 腳本通過require() 函數(shù)引入并使用。那么node.js中module.exports與exports有什么區(qū)別呢?下面小編給大家解答下
    2016-09-09
  • Nodejs 搭建簡單的Web服務(wù)器詳解及實(shí)例

    Nodejs 搭建簡單的Web服務(wù)器詳解及實(shí)例

    這篇文章主要介紹了Nodejs 搭建簡單的Web服務(wù)器詳解及實(shí)例的相關(guān)資料,并附實(shí)例代碼和實(shí)現(xiàn)效果圖,需要的朋友可以參考下
    2016-11-11
  • 詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟

    詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟

    這篇文章主要介紹了詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

大同市| 米脂县| 靖边县| 广水市| 河津市| 准格尔旗| 武平县| 鹿邑县| 新泰市| 苍溪县| 军事| 拜泉县| 清远市| 格尔木市| 古浪县| 界首市| 静乐县| 大化| 彭山县| 南靖县| 喀什市| 石景山区| 林西县| 北宁市| 雷波县| 新建县| 图们市| 黑龙江省| 大英县| 文水县| 资兴市| 九江县| 文山县| 临西县| 新河县| 绍兴县| 炉霍县| 肇源县| 林州市| 射洪县| 元谋县|