Node.js關于數據庫的一些想法

前言

馬上服務外包決賽了贸街,好久沒有寫東西了,大作業(yè)太多了,全是扯淡棘街。
上一個創(chuàng)新創(chuàng)業(yè)管理項目交付了,昨天突然看見Criteria類如下

Criteria是一種比hql更面向對象的查詢方式承边。

然后想到之前項目里自己采用的方法遭殉,慘不忍睹,今天重構一下連接數據庫的想法博助。

實現思路

希望實現的目標:

// 新建與數據庫表對應的實體類對象
let award = new AwardPojo() 
// add方法添加需要篩選的條件
award.add({
    award_name: '服務外包大賽'
})  
// search方法根據add方法中的篩選條件查詢數據险污,以Promise方式返回
award.search().then(res => {
    console.log(res)
    award.order()
})
  1. 構建父類
const isEmptyObj = require('./utils').isEmptyObj
const db = require('mysql')
const config = require('./config')

let pools = db.createPool({
    user: config.db.user,
    port: config.db.port,
    password: config.db.password,
    database: config.db.db,
    host: config.db.host,
    connectionLimit: 20
})




function DBInit(tb, _columns) {
    if (tb) this.tableName = tb
    if (_columns) this.columns = JSON.parse(JSON.stringify(_columns))
    this.filter = {}
}

/**
 * 
 * @param {添加篩選條件} _filter 
 */
DBInit.prototype.add = function (_filter) {
    for (let k in _filter) {
        let v = _filter[k]
        this.filter[k] = v
    }
}

/**
 * 查詢數據庫表
 * @param {開始行數} start 
 * @param {結束函數} end 
 */
DBInit.prototype.search = function (start, end) {
    let sql = `select * from ${this.tableName}`
    if (!isEmptyObj(this.filter)) {
        let fq = `where `
        for (let k in this.filter) {
            let v = this.filter[k]
            fq += `${k}='${v}' and `
        }
        fq = fq.slice(0, fq.length - 4)
        sql += ` ${fq}`
    }
    if (start && end) {
        sql += `limit ${start}, ${end}`
    }
    return new Promise((resolve, reject) =>{
        pools.getConnection((err, connection) => {
            let pojos = null
            if (err) {
                console.log(err)
                reject(pojos)
            }
            connection.query(sql, (err, results) => {
                connection.release()
                if (err) {
                    console.log(err)
                    reject(pojos)
                }
                else {
                    resolve(results)
                }
            })
        })
    })
}

module.exports = DBInit
  1. 對于每張表構建不同的實體類繼承自父類即可
const DBInit = require('../DBHelper')
function AwardPojo() {
    let awardPOJO = {
        award_id: '',
        award_time: '',
        award_name: '',
        award_identity: '',
        award_level: ''
    }
    DBInit.call(this, 'award', awardPOJO)
}
AwardPojo.prototype = new DBInit()
AwardPojo.prototype.constructor = AwardPojo
AwardPojo.prototype.order = function() {
    console.log('order')
}

let award = new AwardPojo()
award.add({
    award_name: '服務外包大賽'
})
award.search().then(res => {
    console.log(res)
    award.order()
})

結束

主要用到的知識點只有一個組合繼承了,參考js原型鏈和面向對象的繼承富岳。
用mysql庫的時候一定要調用release方法關閉鏈接蛔糯!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末膳灶,一起剝皮案震驚了整個濱河市计维,隨后出現的幾起案子,更是在濱河造成了極大的恐慌锅风,老刑警劉巖萝喘,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淮逻,死亡現場離奇詭異琼懊,居然都是意外死亡,警方通過查閱死者的電腦和手機爬早,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門哼丈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筛严,你說我怎么就攤上這事醉旦。” “怎么了桨啃?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵髓抑,是天一觀的道長。 經常有香客問我优幸,道長吨拍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任网杆,我火速辦了婚禮羹饰,結果婚禮上,老公的妹妹穿的比我還像新娘碳却。我一直安慰自己队秩,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布昼浦。 她就那樣靜靜地躺著馍资,像睡著了一般。 火紅的嫁衣襯著肌膚如雪关噪。 梳的紋絲不亂的頭發(fā)上鸟蟹,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音使兔,去河邊找鬼建钥。 笑死,一個胖子當著我的面吹牛虐沥,可吹牛的內容都是我干的熊经。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼欲险,長吁一口氣:“原來是場噩夢啊……” “哼镐依!你這毒婦竟也來了?” 一聲冷哼從身側響起天试,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤槐壳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秋秤,有當地人在樹林里發(fā)現了一具尸體宏粤,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡脚翘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了绍哎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片来农。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖崇堰,靈堂內的尸體忽然破棺而出沃于,到底是詐尸還是另有隱情,我是刑警寧澤海诲,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布繁莹,位于F島的核電站,受9級特大地震影響特幔,放射性物質發(fā)生泄漏咨演。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一蚯斯、第九天 我趴在偏房一處隱蔽的房頂上張望薄风。 院中可真熱鬧,春花似錦拍嵌、人聲如沸遭赂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撇他。三九已至,卻和暖如春狈蚤,著一層夾襖步出監(jiān)牢的瞬間困肩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工炫惩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僻弹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓他嚷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芭毙。 傳聞我的和親對象是個殘疾皇子筋蓖,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容