node——将数据写入data.json防覆盖

前续

1.读取data.json文件内容

2.判断是否是第一次读取data.json(第一次读取则data.json是没有的)

3.将data.json数据转为数组list

4.将写入数据加入数组list

5.将liist保存如data.json

代码如下

else if(req.url.startsWith('/add')&&req.method==='get'){

    
//实现在原来list数组的基础上追加新闻,而不是覆盖
//读取data.json文件中的数据,并将读取道德数据转化为一个数组
//此处,读取文件的时候可以直接写一个utf8编码,这样的话,回调函数中的data就是一个字符串了
    fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
        //因为第一次访问网站,data.json文件本身就不存在,所以会有异常
        //这种错误,我们不认为是网站出错了,所以不需要抛出异常
        if(err&&err.code!=='ENOENT'){
            throw err;
        }
        //如果data没有读取到,则data为空,转换为数组
        var list=JSON.parse(data||[]);
        list.push(urlObj.query);
    //把list数组写入data.json
    //fs.writeFile数据只能传字符串或buffer,可以用JSON.stringify来转换
    fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(list),function(err){
        if(err){
            throw err;
        }
        console.log('ok');
    });
    //3.跳转到新闻列表页
    //设置响应报文头,通过响应报文头告诉浏览器,执行一次页面跳转操作
    //重定向
    res.statusCode=302;//跳转
    res.statusMessage='Found';
    res.setHeader('Location','/');
    res.end();
    });

    
    
        
}

 

posted @ 2019-05-25 20:25  ellenxx  阅读(1284)  评论(0编辑  收藏  举报