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(); }); }