初识node---读写文件

node对文件的操作
node对于json文件的操作:
此实例是基于express的,不要问我为啥一个简单的读写也用express。  因为我懒;

一、引入fs及express模块并实例化express;

其中express需要安装:

实例化express:
  


二、匹配首页的get请求,并指定端口

到这里可以测试一下是否成功;
控制台执行:


开浏览器,访问  localhost:3000:
OK,启动成功;


三、匹配访问用户列表的请求:
现在我们创建一个resource文件并在它下面创建一个user.json文件; 初始为一个空的数组:
  

ctrl+c退出node,并重新执行:

       访问localhost:3000/userlist:
页面上什么都没有,因为我们没有数据,做个判断,并提示无数据:
红色部分为新添加的内容;注意括号的配对;

ctrl+c退出node,并重新执行:

刷新浏览器:
ok, 提示成功出现;
每一次都需要退出重启,你烦了没?  反正我是不耐烦了, 安装一个supervisor 

supervisor执行程序:

现在我们的程序已经可以热更新了,测试一下,修改一下提示文字:
保存直接刷新页面:
ok,成功了。

。。。。。。刚去开个小会, 一不小心到下班时间了,先下班。明天早上来接着写 再见


继续:

处理添加用户的请求:

先测试:

查看json文件:


可以看到已经添加上去了。 这边的添加事件所有属性都是随机取的。也没有对是否重名做判断和处理;


下面做一个删除用户的路由,需要用到用户名的配对:



先直接访问adduser刷新几次添加几条数值,访问userlist查看用户列表:


尝试一下删除第三条数据,访问deleteuser加上参数?91

提示删除成功,

刷新userlist可以看到第三条已经没有了。


再次访问deleteuser参数还是?91

返回末找到。


ok,到这里一个基本的读写已经完成了。附上全部代码:
const fs=require("fs");              //引入fs模块
const express=require("express");    //引入express模块
const app=express();  
const url=require("url");               //实例化express

app.get('/',function(req,res){      //匹配主页的get请求
    res.send("首页")
})

app.listen(3000)    // 指定端口;

app.get("/userlist",function(req,res){      //匹配用户列表的get请求
    fs.readFile('resource/user.json','utf-8',function(err,data){    //读取用户列表json文件
        if(err){
            res.send("文件读取失败");        //读取失败则返回失败提示
        }else{
            if(JSON.parse(data).length==0){        //若没有数据则提示无数据
                res.end("暂无数据,请稍候查询!");
            }else{
                JSON.parse(data).forEach(function(v){    //循环读取到的内容
                    res.write("name:"+v.name+', age:'+v.age+', sex:'+v.sex+"\n");     //依次输出到页面上
                })
            }
           res.send();      //结束请求
        }
    })
})



app.get("/adduser",function(req,res){       //匹配添加用户的请求(这里只演示不带参数的get请求)
    fs.readFile('resource/user.json','utf-8',function(err,data){    //读取用记列表json文件
        if(err){
            res.send("文件读取失败");        //读取失败则返回失败提示
        }else{
            let userList=JSON.parse(data);      //转json字符串为对象
            userList.push({"name":parseInt(Math.random()*100),"age":"'"+parseInt(Math.random()*50)+"'","sex":Math.random()<0.5?"男":"女"});  //为对象添加一个新用户
            let newList=JSON.stringify(userList);   //将新的json对象转换为json字符串
            fs.writeFileSync('resource/user.json',newList);     //将新的json字符串写入到用户列表json文件中
            res.send("添加成功")        //提示添加成功并结束请求
        }
    })
})


app.get("/deleteuser",function(req,res){       //匹配添加用户的请求(这里只演示不带参数的get请求)
    var urls=url.parse(req.url);               //将url对象化,需引用url模块   var url=require('url')
    fs.readFile('resource/user.json','utf-8',function(err,data){    //读取用记列表json文件
        if(err){
            res.send("文件读取失败");        //读取失败则返回失败提示
        }else{
            var datas=JSON.parse(data);
            //注: 此处不建议用forEach,因为forEach无法直接跳出循环,需要多写一个变量来判断是否匹配到用户
            for (var i=0;i<datas.length;i++){   //for 循环查找是否有匹配项  
                if(datas[i].name==urls.query){     //如果匹配到对应名称; query是?后面跟的参数
                    datas.splice(i,1);     //从数组中删除该对象
                    fs.writeFileSync('resource/user.json',JSON.stringify(datas));     //将新的json字符串写入到用户列表json文件中
                    res.send("删除成功");       //提示删除成功
                    return false;              //return false, 不执行后面的操作
                }
            }
            res.send("未找到该用户");         //若没有匹配项,提示末找到该用户
        }
    })
})


// 通配符,不是以上任意请求的话,返回hello world!并结束请求;
app.get('*',function(req,res){
     var urls=url.parse(req.url);
    res.send("hello world!");
})






这只是一个小例子,还有很多东西需要完善,比如添加用户的时候判断是否重复;比如修改某条数据的某个值等等;
这些东西都是以读写的基本方法上衍生出来的。需要的话可以自行尝试



-------------end;
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值