promise封装node读写功能

来源:互联网 发布:数据压缩算法 编辑:程序博客网 时间:2024/06/07 21:22

最近在通过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);  })});