詳解利用nodejs對本地json文件進行增刪改查
哈嘍!nodejs的文件系統(tǒng),接觸過node的對node的文件系統(tǒng)肯定不會陌生,這兩天我就在思考一個問題,我是否可以在本地操作我的本地json文件,這樣一個本地的文本數(shù)據(jù)庫就有了,如果是便簽之類,記錄的軟件,我完全可以不用連后臺的數(shù)據(jù)庫,我可以自己操作本地的json文件,自己用node寫后臺,答案是肯定的,下面我們就一起來實現(xiàn)一下吧,對本地json文件的增、刪、改、查
1.增
首先我們先看一下demo的目錄結(jié)構(gòu)
我們看一下person.json的內(nèi)容
沒毛病,接下來就是見證奇跡的時刻了
下面寫nodejs的代碼
var fs = require('fs'); var params = { "id":5, "name":"白眉鷹王" }//在真實的開發(fā)中id肯定是隨機生成的而且不會重復(fù)的,下一篇寫如何生成隨機切不會重復(fù)的隨機數(shù),現(xiàn)在就模擬一下假數(shù)據(jù) //寫入json文件選項 function writeJson(params){ //現(xiàn)將json文件讀出來 fs.readFile('./mock/person.json',function(err,data){ if(err){ return console.error(err); } var person = data.toString();//將二進制的數(shù)據(jù)轉(zhuǎn)換為字符串 person = JSON.parse(person);//將字符串轉(zhuǎn)換為json對象 person.data.push(params);//將傳來的對象push進數(shù)組對象中 person.total = person.data.length;//定義一下總條數(shù),為以后的分頁打基礎(chǔ) console.log(person.data); var str = JSON.stringify(person);//因為nodejs的寫入文件只認(rèn)識字符串或者二進制數(shù),所以把json對象轉(zhuǎn)換成字符串重新寫入json文件中 fs.writeFile('./mock/person.json',str,function(err){ if(err){ console.error(err); } console.log('----------新增成功-------------'); }) }) } writeJson(params)//執(zhí)行一下;
結(jié)果如下
下面我們來看一下json文件的結(jié)果
看,json文件已經(jīng)被新增進來了
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); //把數(shù)據(jù)讀出來刪除 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ù)寫進去 fs.writeFile('./mock/person.json',str,function(err){ if(err){ console.error(err); } console.log("----------刪除成功------------"); }) }) } deleteJson(5);//執(zhí)行一下
第5個就刪除了
3.改
一開始的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); //把數(shù)據(jù)讀出來,然后進行修改 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é)果如下
看一下json文件
修改成功?。。?!
4.查
現(xiàn)在模擬一下分頁
先看一下json文件長什么樣
上代碼
var fs = require('fs'); //通過傳回來的頁數(shù),進行分頁模擬 function pagination(p,s){ //p為頁數(shù),比如第一頁傳0,第二頁傳1,s為每頁多少條數(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ù)讀出來 //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);//查詢第一頁,每頁的數(shù)據(jù)條數(shù)為6條
執(zhí)行結(jié)果為
下面看一下第二頁
執(zhí)行pagination(1,6);
執(zhí)行結(jié)果為
以此類推,就實現(xiàn)了模擬分頁的效果
5.總結(jié)
ok,一套基本的增刪改查就這樣寫完了,感覺node還是特別強大的,感覺自己又進步了一些,雖然可能有人覺得這樣寫沒有意義,也許吧,但是我覺得很有意義,讓我也收獲了不少!?。?/p>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
npm install安裝模塊-save和-save-dev命令的區(qū)別
這篇文章介紹了npm install安裝模塊-save和-save-dev命令的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06淺談在koa2中實現(xiàn)頁面渲染的全局?jǐn)?shù)據(jù)
本篇文章主要介紹了淺談在koa2中實現(xiàn)頁面渲染的全局?jǐn)?shù)據(jù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10express框架,報錯:“Cannot set headers after t
這篇文章主要介紹了express框架,報錯:“Cannot set headers after they are sent to the client”,解決方法,結(jié)合實例形式總結(jié)分析了常見的問題原因與對應(yīng)的解決方案,需要的朋友可以參考下2023-05-05使用NodeJs 開發(fā)微信公眾號(三)微信事件交互實例
這篇文章主要介紹了使用NodeJs 開發(fā)微信公眾號(三)微信事件交互實例的相關(guān)資料,需要的朋友可以參考下2016-03-03在?node?中使用?koa-multer?庫上傳文件的方式詳解
本文主要介紹了上傳單個文件、多個文件,文件數(shù)量大小限制、限制文件上傳類型和對上傳的圖片進行不同大小的裁剪,對node使用?koa-multer?庫上傳文件相關(guān)知識感興趣的朋友一起看看吧2024-01-01