站長資訊網
        最全最豐富的資訊網站

        一文聊聊node怎么封裝mysql處理語句

        node中怎么封裝mysql?下面本篇文章給大家介紹一下node.js封裝mysql處理語句的方法,希望對大家有所幫助!

        一文聊聊node怎么封裝mysql處理語句

        在以往接口中一般都是直接在路由中書寫相關處理語句,造成代碼冗余性,今天使用express框架來進行相關mysql的語句封裝。

        一.所需包

        npm i mysql -S npm i express -S
        登錄后復制

        二.MySql連接文件

        const mysql = require('mysql')function createConnection() {     const connection = mysql.createConnection({         host: '',  //地址         user: '',  //用戶名         password: '',  //密碼         port: '',  //端口         database: ''  //數據庫名     });     return connection;}module.exports.createConnection = createConnection;
        登錄后復制

        【相關教程推薦:nodejs視頻教程、編程教學】

        三.封裝文件

        引入MySQL連接相關文件,進行連接數據庫操作

        const mysql = require('../mysql/mysql')let connection = null;connection = mysql.createConnection();/**  * 錯誤消息  */let bad_msg = {     code: 500,     msg: '內部錯誤!'}/**  * 成功消息  */let success_msg = {     code: 200,     msg: '操作成功'}const connections = {     /**      * 查詢方法      * @param {*} table 表名      * @param {*} condition 條件      * @param {*} params 參數      * @param {*} search 查詢條件      * @returns       */     find(table, condition, params, search = '*') {         return new Promise((resolve, reject) => {             let sql = `SELECT ${search} FROM ${table} WHERE ${condition}`             connection.query(sql, params, (err, result) => {                 if (err) {                     reject(bad_msg)                 } else {                     let _ = JSON.parse(JSON.stringify(success_msg))                     _.data = result                    resolve(_)                 }             })         })     },     /**      * 插入方法      * @param {*} table 表名      * @param {*} condition 條件      * @param {*} params 參數      * @returns       */     insert(table, condition, params) {         return new Promise((resolve, reject) => {             const str = "?"             let _ = str.repeat((condition.split(',')).length)             let val = (Array.from(_)).toString()             let sql = `INSERT INTO ${table}(${condition}) VALUES(${val})`             connection.query(sql, params, (err, result) => {                 if (err) {                     reject(bad_msg)                 } else {                     resolve(success_msg)                 }             })         })     },     /**      * 更新方法      * @param {*} table 表名      * @param {*} val 值      * @param {*} condition 條件      * @param {*} params 參數      * @returns       */     update(table, val, condition, params) {         return new Promise((resolve, reject) => {             let sql = `UPDATE ${table} SET ${val} WHERE ${condition}`             connection.query(sql, params, (err, result) => {                 if (err) {                     reject(bad_msg)                 } else {                     resolve(success_msg)                 }             })         })     },     /**      * 刪除方法      * @param {*} table 表名      * @param {*} condition 條件      * @param {*} params 參數      * @returns       */     del(table, condition, params) {         return new Promise((resolve, reject) => {             let sql = `DELETE FROM ${table} WHERE ${condition}`             connection.query(sql, params, (err, result) => {                 if (err) {                     reject(bad_msg)                 } else {                     resolve(success_msg)                 }             })         })     },}module.exports = connections
        登錄后復制

        四.使用

        我們使用登錄注冊來進行演示:

        const express = require('express')const router = express.Router()const connections = require('../../static/connection')// token生成插件模塊const jwt = require('jsonwebtoken');// Token簽名var secret = ''const CreatId = require('../../static/ranId')router.post('/user/details', (req, res) => {     connections.find('user_table', `ID=?`,req.user.ID).then(resp => {         res.send(resp)     })})router.post('/api/login', (req, res) => {     connections.find('user_table', 'user=?', req.body.user).then(resp => {         let {data} = resp        if (data.length !== 0) {             for (let i = 0; i < data.length; i++) {                 // 郵箱或者密碼不正確的時候                 if (req.body.user !== data[i].user || req.body.pwd !== data[i].pwd) {                     res.send({                         code: 202,                         msg: '用戶名或密碼有誤!'                     })                 } else {                     // 郵箱和密碼輸入正確                     if (req.body.user === data[i].user && req.body.pwd === data[i].pwd) {                         // 傳輸的token內容                         let token = jwt.sign({ ID: data[i].ID }, secret, { expiresIn: '72H' });                         // 返回結果                         res.send({                             code: 200,                             msg: '操作成功!',                             token: 'Bearer ' + token,                         })                     }                 }             }         } else {             res.send({                 code: 400,                 msg: '賬號不存在請注冊!'             })         }     }).catch(e => {         res.send(e)     })})router.post('/api/register', (req, res) => {     connections.find('user_table', 'user=?', req.body.user).then(resp => {         if (resp.data.length > 0) {             res.send({                 code: 202,                 msg: '該用戶已經存在!'             })         } else {             let _ = req.body            let id = CreatId(3) + CreatId(3)             connections.insert('user_table', 'ID,user,pwd,avatarUrl,location,RegisterTime,isAdmin,isDel', [id, _.user, _.pwd, '/static/userimg/user.webp', _.location, Date.now(), 0, 0]).then(resps => {                 // 傳輸的token內容                 let token = jwt.sign({ ID: id }, secret, { expiresIn: '72H' });                 // 返回結果                 res.send({                     code: 200,                     msg: '操作成功!',                     token: 'Bearer ' + token,                 })             })         }     })})module.exports = router
        登錄后復制

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品亚洲乱码伦伦中文| 国产精品毛片久久久久久久| 91久久精品无码一区二区毛片| 国产成人综合精品一区| 久久棈精品久久久久久噜噜| 国产一区二区三区在线观看精品 | 久久精品国产清高在天天线| 国产三级精品三级在线观看| 国产精品91av| 日本午夜精品理论片A级APP发布| 亚洲精品国产自在久久 | 亚洲色精品88色婷婷七月丁香 | 久久精品中文字幕一区| 2022免费国产精品福利在线| 综合国产精品第一页| 国产亚洲精品影视在线产品| 欧美一区二区精品系列在线观看| 精品无码日韩一区二区三区不卡| 亚洲а∨天堂久久精品9966| 精品国产午夜肉伦伦影院| 久久精品国产福利国产秒| 国产成人精品日本亚洲直接 | 91精品啪在线观看国产电影| 国产成人精品免费视频大全麻豆| 久久久精品国产sm调教网站| 无码国产精品一区二区免费16| 日韩专区亚洲精品欧美专区| 精品无码国产污污污免费网站国产 | 99久久精品免费国产大片| 久久99精品久久久久久动态图 | 久久精品中文闷骚内射| 亚洲乱码国产乱码精品精| 天天视频国产精品| 四虎影视永久在线精品免费| 无码8090精品久久一区| 日韩精品在线播放| 伊人 久久 精品 | 老子影院午夜精品无码| 精品国内自产拍在线观看| 国产精品自在线拍国产第一页| 国产亚洲精品精品国产亚洲综合|