欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查

 更新時(shí)間:2019年09月20日 10:15:20   作者:三哥玩前端  
這篇文章主要介紹了詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

哈嘍!nodejs的文件系統(tǒng),接觸過(guò)node的對(duì)node的文件系統(tǒng)肯定不會(huì)陌生,這兩天我就在思考一個(gè)問(wèn)題,我是否可以在本地操作我的本地json文件,這樣一個(gè)本地的文本數(shù)據(jù)庫(kù)就有了,如果是便簽之類,記錄的軟件,我完全可以不用連后臺(tái)的數(shù)據(jù)庫(kù),我可以自己操作本地的json文件,自己用node寫(xiě)后臺(tái),答案是肯定的,下面我們就一起來(lái)實(shí)現(xiàn)一下吧,對(duì)本地json文件的增、刪、改、查

1.增

首先我們先看一下demo的目錄結(jié)構(gòu)

這里寫(xiě)圖片描述

我們看一下person.json的內(nèi)容

這里寫(xiě)圖片描述

沒(méi)毛病,接下來(lái)就是見(jiàn)證奇跡的時(shí)刻了

下面寫(xiě)nodejs的代碼

var fs = require('fs');
var params = {
  "id":5,
  "name":"白眉鷹王"
}//在真實(shí)的開(kāi)發(fā)中id肯定是隨機(jī)生成的而且不會(huì)重復(fù)的,下一篇寫(xiě)如何生成隨機(jī)切不會(huì)重復(fù)的隨機(jī)數(shù),現(xiàn)在就模擬一下假數(shù)據(jù)
//寫(xiě)入json文件選項(xiàng)
function writeJson(params){
  //現(xiàn)將json文件讀出來(lái)
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      return console.error(err);
    }
    var person = data.toString();//將二進(jìn)制的數(shù)據(jù)轉(zhuǎn)換為字符串
    person = JSON.parse(person);//將字符串轉(zhuǎn)換為json對(duì)象
    person.data.push(params);//將傳來(lái)的對(duì)象push進(jìn)數(shù)組對(duì)象中
    person.total = person.data.length;//定義一下總條數(shù),為以后的分頁(yè)打基礎(chǔ)
    console.log(person.data);
    var str = JSON.stringify(person);//因?yàn)閚odejs的寫(xiě)入文件只認(rèn)識(shí)字符串或者二進(jìn)制數(shù),所以把json對(duì)象轉(zhuǎn)換成字符串重新寫(xiě)入json文件中
    fs.writeFile('./mock/person.json',str,function(err){
      if(err){
        console.error(err);
      }
      console.log('----------新增成功-------------');
    })
  })
}
writeJson(params)//執(zhí)行一下;

結(jié)果如下

這里寫(xiě)圖片描述

下面我們來(lái)看一下json文件的結(jié)果

這里寫(xiě)圖片描述

看,json文件已經(jīng)被新增進(jìn)來(lái)了

2.刪

var fs = require('fs');
//刪除json文件中的選項(xiàng)
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);
    //把數(shù)據(jù)讀出來(lái)刪除
    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);
    //然后再把數(shù)據(jù)寫(xiě)進(jìn)去
    fs.writeFile('./mock/person.json',str,function(err){
      if(err){
        console.error(err);
      }
      console.log("----------刪除成功------------");
    })
  })
}
deleteJson(5);//執(zhí)行一下

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述

第5個(gè)就刪除了

3.改

一開(kāi)始的json文件是這個(gè)樣子的

這里寫(xiě)圖片描述

下面上代碼

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);
    //把數(shù)據(jù)讀出來(lái),然后進(jìn)行修改
    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)//執(zhí)行一下;

結(jié)果如下

這里寫(xiě)圖片描述

看一下json文件

這里寫(xiě)圖片描述

修改成功?。。?!

4.查

現(xiàn)在模擬一下分頁(yè)

先看一下json文件長(zhǎng)什么樣

這里寫(xiě)圖片描述

上代碼

var fs = require('fs');
//通過(guò)傳回來(lái)的頁(yè)數(shù),進(jìn)行分頁(yè)模擬
function pagination(p,s){
  //p為頁(yè)數(shù),比如第一頁(yè)傳0,第二頁(yè)傳1,s為每頁(yè)多少條數(shù)據(jù)
  fs.readFile('./mock/person.json',function(err,data){
    if(err){
      console.error(err);
    }
    var person = data.toString();
    person = JSON.parse(person);
    //把數(shù)據(jù)讀出來(lái)
    //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);//查詢第一頁(yè),每頁(yè)的數(shù)據(jù)條數(shù)為6條

執(zhí)行結(jié)果為

這里寫(xiě)圖片描述

下面看一下第二頁(yè)

執(zhí)行pagination(1,6);

執(zhí)行結(jié)果為

這里寫(xiě)圖片描述

以此類推,就實(shí)現(xiàn)了模擬分頁(yè)的效果

5.總結(jié)

ok,一套基本的增刪改查就這樣寫(xiě)完了,感覺(jué)node還是特別強(qiáng)大的,感覺(jué)自己又進(jìn)步了一些,雖然可能有人覺(jué)得這樣寫(xiě)沒(méi)有意義,也許吧,但是我覺(jué)得很有意義,讓我也收獲了不少?。?!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決await在forEach中不起作用的問(wèn)題

    解決await在forEach中不起作用的問(wèn)題

    這篇文章主要介紹了解決await在forEach中不起作用的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能

    nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • npm install安裝模塊-save和-save-dev命令的區(qū)別

    npm install安裝模塊-save和-save-dev命令的區(qū)別

    這篇文章介紹了npm install安裝模塊-save和-save-dev命令的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解

    pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解

    這篇文章主要為大家介紹了pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 深入理解NodeJS 多進(jìn)程和集群

    深入理解NodeJS 多進(jìn)程和集群

    這篇文章主要介紹了深入理解NodeJS 多進(jìn)程和集群,詳細(xì)的介紹了什么是進(jìn)程和進(jìn)程的實(shí)現(xiàn)等,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • CentOS7中源碼編譯安裝NodeJS的完整步驟

    CentOS7中源碼編譯安裝NodeJS的完整步驟

    這篇文章主要給大家介紹了關(guān)于CentOS7中源碼編譯安裝NodeJS的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 淺談在koa2中實(shí)現(xiàn)頁(yè)面渲染的全局?jǐn)?shù)據(jù)

    淺談在koa2中實(shí)現(xiàn)頁(yè)面渲染的全局?jǐn)?shù)據(jù)

    本篇文章主要介紹了淺談在koa2中實(shí)現(xiàn)頁(yè)面渲染的全局?jǐn)?shù)據(jù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • express框架,報(bào)錯(cuò):“Cannot set headers after they are sent to the client”,解決方法總結(jié)

    express框架,報(bào)錯(cuò):“Cannot set headers after t

    這篇文章主要介紹了express框架,報(bào)錯(cuò):“Cannot set headers after they are sent to the client”,解決方法,結(jié)合實(shí)例形式總結(jié)分析了常見(jiàn)的問(wèn)題原因與對(duì)應(yīng)的解決方案,需要的朋友可以參考下
    2023-05-05
  • 使用NodeJs 開(kāi)發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例

    使用NodeJs 開(kāi)發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例

    這篇文章主要介紹了使用NodeJs 開(kāi)發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 在?node?中使用?koa-multer?庫(kù)上傳文件的方式詳解

    在?node?中使用?koa-multer?庫(kù)上傳文件的方式詳解

    本文主要介紹了上傳單個(gè)文件、多個(gè)文件,文件數(shù)量大小限制、限制文件上傳類型和對(duì)上傳的圖片進(jìn)行不同大小的裁剪,對(duì)node使用?koa-multer?庫(kù)上傳文件相關(guān)知識(shí)感興趣的朋友一起看看吧
    2024-01-01

最新評(píng)論