亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

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

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

正文

項目目錄

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

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

sql.js

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

//單純的栗子
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ù)庫的配置,服務器上的就寫服務器的,本地的就寫本地的,都可以都可以

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"); //注意改成自己項目中的路徑
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();
      });
    });
  })
};

查一個

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的第二個參數(shù)要求傳數(shù)組,為了怕bug,將傳入的對象給他變成一個數(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ù)庫進行用戶查找
      const {data} = await db.dbQueryById("user",{"username":username},res)
      // 接下來自己想象吧
    } catch (err) {
      res.json({
        code: "500",
        msg: "用戶不存在"
      });
    }
})

搞定

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

相關(guān)文章

  • 詳解node+express+ejs+bootstrap構(gòu)建項目

    詳解node+express+ejs+bootstrap構(gòu)建項目

    本篇文章主要介紹了詳解node+express+ejs+bootstrap構(gòu)建項目,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • nodejs中的express-jwt的使用解讀

    nodejs中的express-jwt的使用解讀

    這篇文章主要介紹了nodejs中的express-jwt的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • node.js實現(xiàn)回調(diào)的方法示例

    node.js實現(xiàn)回調(diào)的方法示例

    這篇文章主要介紹了node.js實現(xiàn)回調(diào)的方法,結(jié)合實例形式分析了node.js實現(xiàn)向回調(diào)函數(shù)傳遞參數(shù)、閉包的使用及鏈式回調(diào)相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 詳解Puppeteer前端自動化測試實踐

    詳解Puppeteer前端自動化測試實踐

    這篇文章主要介紹了詳解Puppeteer前端自動化測試實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 30分鐘用Node.js構(gòu)建一個API服務器的步驟詳解

    30分鐘用Node.js構(gòu)建一個API服務器的步驟詳解

    這篇文章主要介紹了30分鐘用Node.js構(gòu)建一個API服務器的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • npm?install常見報錯以及問題詳解

    npm?install常見報錯以及問題詳解

    npm?install總是一言難盡,下面這篇文章主要給大家介紹了關(guān)于npm?install常見報錯以及問題的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Node.js中利用js-xlsx處理xlsx文件的實現(xiàn)

    Node.js中利用js-xlsx處理xlsx文件的實現(xiàn)

    js-xlsx庫是目前Github上star數(shù)量最多的處理Excel的庫,本文介紹用 Node.js中的js-xls庫來處理Excel文件,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 快速掌握Node.js中setTimeout和setInterval的使用方法

    快速掌握Node.js中setTimeout和setInterval的使用方法

    這篇文章主要為大家介紹了快速掌握Node.js中setTimeout和setInterval的使用方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Nodejs進階:express+session實現(xiàn)簡易登錄身份認證

    Nodejs進階:express+session實現(xiàn)簡易登錄身份認證

    本篇文章主要介紹了Nodejs進階:express+session實現(xiàn)簡易身份認證示例,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • Node.js命令行/批處理中如何更改Linux用戶密碼淺析

    Node.js命令行/批處理中如何更改Linux用戶密碼淺析

    這篇文章主要給大家介紹了關(guān)于Node.js命令行/批處理中如何更改Linux用戶密碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07

最新評論