详解利用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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
如何用php获取文件名后缀
2013/06/09 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
python中list常用操作实例详解
2015/06/03 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python实现的矩阵类实例
2017/08/22 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
值得收藏的10道python 面试题
2019/04/15 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
django 模版关闭转义方式
2020/05/14 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
2014信息公开实施方案
2014/02/22 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
2015年教师业务工作总结
2015/05/26 职场文书