node之實現一個隨專案啟動將資料庫配置載入到記憶體中
阿新 • • 發佈:2018-12-20
乾貨,直接上程式碼:
專案結構:
2.建立此快取介面,將快取封裝到一個物件中:dataCfg。
3.上圖中快取物件dataCfg = await getDataBaseCfg()是將這個方法封裝到了工具類中,如下圖:
4.在app.js中應用,啟動的時候會將此物件載入到記憶體中。
到此,從資料庫中載入配置到node快取已經做完了,需要注意你的資料庫引入時機和去獲取資料的時機,最後附上讀取配置欄位封裝的方法。後臺是通過兩張表,字典表和字典欄位表:
'use strict'; const _ = require('underscore'); const connection = require('../config/pool.js'); const logger = require('../lib/logger'); const config = require('../config/mysql_banche'); const db = require('./db'); const dataBaseCfg = require('../config/dataBaseCfg.js'); const util = require('./util.js'); /** * 獲取快取配置中的字典值 * * @param dictTypeId 字典型別欄位 * @param dictKey 字典Key值 * @return 字典描述值 */ exports.getDictDesc = async function(dictTypeId,dictKey) { let dictDest = ""; try{ let cacheCfg = await dataBaseCfg; if(!cacheCfg){ //無快取資料 dataBaseCfg = await util.getDataBaseCfg(); cacheCfg = await dataBaseCfg; } let dicts =await cacheCfg[dictTypeId]; //陣列 if(dicts && dicts.length > 0){ for(let i=0;i<dicts.length;i++){ if(dicts[i].dictKey == dictKey){ dictDest = dicts[i].dictdesc; } } } }catch(err){ logger.info("獲取快取字典值報錯:%s",err); } return dictDest; }; /** * 獲取快取配置中的字典物件 * * @param dictTypeId 字典型別欄位 * @param dictKey 字典Key值 * @return 字典描述值 */ exports.getDict = async function(dictTypeId,dictKey) { let dictDest = {}; try{ let cacheCfg = await dataBaseCfg; if(!cacheCfg){ //無快取資料 dataBaseCfg = await util.getDataBaseCfg(); cacheCfg = await dataBaseCfg; } let dicts =await cacheCfg[dictTypeId]; //陣列 if(dicts && dicts.length > 0){ for(let i=0;i<dicts.length;i++){ if(dicts[i].dictKey == dictKey){ dictDest = dicts[i]; } } } }catch(err){ logger.info("獲取快取字典值報錯:%s",err); } return dictDest; };