详解利用nodejs对本地json文件进行增删改查


Posted in NodeJs onSeptember 20, 2019

哈喽!nodejs的文件系统,接触过node的对node的文件系统肯定不会陌生,这两天我就在思考一个问题,我是否可以在本地操作我的本地json文件,这样一个本地的文本数据库就有了,如果是便签之类,记录的软件,我完全可以不用连后台的数据库,我可以自己操作本地的json文件,自己用node写后台,答案是肯定的,下面我们就一起来实现一下吧,对本地json文件的增、删、改、查

1.增

首先我们先看一下demo的目录结构

详解利用nodejs对本地json文件进行增删改查

我们看一下person.json的内容

详解利用nodejs对本地json文件进行增删改查

没毛病,接下来就是见证奇迹的时刻了

下面写nodejs的代码

var fs = require('fs');
var params = {
  "id":5,
  "name":"白眉鹰王"
}//在真实的开发中id肯定是随机生成的而且不会重复的,下一篇写如何生成随机切不会重复的随机数,现在就模拟一下假数据
//写入json文件选项
function writeJson(params){
  //现将json文件读出来
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      return console.error(err);
    }
    var person = data.toString();//将二进制的数据转换为字符串
    person = JSON.parse(person);//将字符串转换为json对象
    person.data.push(params);//将传来的对象push进数组对象中
    person.total = person.data.length;//定义一下总条数,为以后的分页打基础
    console.log(person.data);
    var str = JSON.stringify(person);//因为nodejs的写入文件只认识字符串或者二进制数,所以把json对象转换成字符串重新写入json文件中
    fs.writeFile('./mock/person.json',str,function(err){
      if(err){
        console.error(err);
      }
      console.log('----------新增成功-------------');
    })
  })
}
writeJson(params)//执行一下;

结果如下

详解利用nodejs对本地json文件进行增删改查

下面我们来看一下json文件的结果

详解利用nodejs对本地json文件进行增删改查

看,json文件已经被新增进来了

2.删

var fs = require('fs');
//删除json文件中的选项
function deleteJson(id){
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      return console.error(err);
    }
    var person = data.toString();
    person = JSON.parse(person);
    //把数据读出来删除
    for(var i = 0; i < person.data.length;i++){
      if(id == person.data[i].id){
        //console.log(person.data[i])
        person.data.splice(i,1);
      }
    }
    console.log(person.data);
    person.total = person.data.length;
    var str = JSON.stringify(person);
    //然后再把数据写进去
    fs.writeFile('./mock/person.json',str,function(err){
      if(err){
        console.error(err);
      }
      console.log("----------删除成功------------");
    })
  })
}
deleteJson(5);//执行一下

详解利用nodejs对本地json文件进行增删改查

详解利用nodejs对本地json文件进行增删改查

第5个就删除了

3.改

一开始的json文件是这个样子的

详解利用nodejs对本地json文件进行增删改查

下面上代码

var fs = require('fs');
var params = {
  "name":"孙悟空"
}
function changeJson(id,params){
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      console.error(err);
    }
    var person = data.toString();
    person = JSON.parse(person);
    //把数据读出来,然后进行修改
    for(var i = 0; i < person.data.length;i++){
      if(id == person.data[i].id){
        console.log('id一样的');
        for(var key in params){
          if(person.data[i][key]){
            person.data[i][key] = params[key];
          }
        }
      }
    }
    person.total = person.data.length;
    var str = JSON.stringify(person);
    //console.log(str);
    fs.writeFile('./mock/person.json',str,function(err){
      if(err){
        console.error(err);
      }
      console.log('--------------------修改成功');
      console.log(person.data);
    })
  })
}
changeJson(3,params)//执行一下;

结果如下

详解利用nodejs对本地json文件进行增删改查

看一下json文件

详解利用nodejs对本地json文件进行增删改查

修改成功!!!!

4.查

现在模拟一下分页

先看一下json文件长什么样

详解利用nodejs对本地json文件进行增删改查

上代码

var fs = require('fs');
//通过传回来的页数,进行分页模拟
function pagination(p,s){
  //p为页数,比如第一页传0,第二页传1,s为每页多少条数据
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      console.error(err);
    }
    var person = data.toString();
    person = JSON.parse(person);
    //把数据读出来
    //console.log(person.data);
    var length = person.data.length;
    var pagePerson = person.data.slice(s*p,(p+1)*s);
    console.log('------------------------查询成功pagePerson');
    console.log(pagePerson);
  })
}
pagination(0,6);//查询第一页,每页的数据条数为6条

执行结果为

详解利用nodejs对本地json文件进行增删改查

下面看一下第二页

执行pagination(1,6);

执行结果为

详解利用nodejs对本地json文件进行增删改查

以此类推,就实现了模拟分页的效果

5.总结

ok,一套基本的增删改查就这样写完了,感觉node还是特别强大的,感觉自己又进步了一些,虽然可能有人觉得这样写没有意义,也许吧,但是我觉得很有意义,让我也收获了不少!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 NodeJs
nodejs实现聊天机器人功能
Sep 19 #NodeJs
图解NodeJS实现登录注册功能
Sep 16 #NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 #NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 #NodeJs
nodejs的安装使用与npm的介绍
Sep 11 #NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 #NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 #NodeJs
You might like
php正则
2006/07/07 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
python发送邮件功能实现代码
2016/07/15 Python
Python连接DB2数据库
2016/08/27 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python集合删除多种方法详解
2020/02/10 Python
python 多线程中join()的作用
2020/10/29 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
最新大学生自我评价
2013/09/24 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
简易版租房协议书范本
2014/10/13 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
Java基础——Map集合
2022/04/01 Java/Android