promise封裝node讀寫功能
阿新 • • 發佈:2019-01-23
最近在通過node簡單的實現mock虛擬資料的方法,其實可以通過node的fs模組,來讀取和寫入我們本地的檔案,來實現mock的功能:
我們可以制定一個JS檔案,專門封裝一個簡單的讀寫檔案的功能。
JS程式碼如下:
接下來我們就可以呼叫了:let fs = require('fs'); let dealFn = { /** * [通過Promise寫入資料] * @param {String} file [檔名] * @param {Object} obj [寫入的資料(物件)] * @return {Object} [Promise物件] */ writeFileData: (filename, obj) => { let promise = new Promise((resolve, reject) => { obj = JSON.stringify(obj); fs.writeFile("./data/" + filename, obj, function(err){ if(err) { reject("fail " + err) } else { resolve("write success!"); } }); }) return promise; }, /** * [通過Promise讀取儲存的資料] * @param {String} file [檔名] * @return {Object} [Promise物件] */ readFileData: (filename) => { let promise = new Promise((resolve, reject) => { fs.readFile("./data/" + filename, "utf-8", (err, data) => { if(err) { console.log(err); reject("read filedata error!"); }else { data = JSON.parse(data); resolve(data); } }) }); return promise; } }; module.exports = dataFn;
router.post('/test.json',function(req,res,next){ let sendData = { message: 'ok', data: {} }; dealFn.readFileData('../data/test.json').then(data=>{ sendData.data = data; res.status(200).json(sendData); }).catch(message=>{ sendData.errno = -1; sendData.message = '暫時沒有資料'; res.status(200).json(sendData); }) });