详解利用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教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 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脚本的10个技巧(3)
2006/10/09 PHP
PHP+DBM的同学录程序(2)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
Python中的exec、eval使用实例
2014/09/23 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
python+requests接口自动化框架的实现
2020/08/31 Python
python 进程池pool使用详解
2020/10/15 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
仓管岗位职责范本
2014/02/08 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
三孔导游词
2015/02/05 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python