亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

基于Koa(nodejs框架)對json文件進行增刪改查的示例代碼

2024-05-06 16:47:58
字體:
來源:轉載
供稿:網友

想使用nodejs(koa)搭建一個完整的前后端,完成數據的增刪改查,又不想使用數據庫,那使用json文件吧。

本文介紹了基于koa的json文件的增、刪、改、查。

代碼準備

const Koa = require('koa')const bodyParser = require('koa-bodyparser')const Router = require('koa-router')const fs = require('fs')const path = require('path')const app = new Koa()const router = new Router()app.use(bodyParser())// 路由const deploy = new Router()// 增刪改查接口,可添加在下面// 裝載所有子路由router.use('/deploy', deploy.routes(), deploy.allowedMethods())app.use(router.routes()).use(router.allowedMethods())app.listen(3000);

json示例

[ {"id": 1, "name": "唐僧"}, {"id": 2, "name": "孫悟空"}, {"id": 3, "name": "豬八戒"}, {"id": 4, "name": "沙和尚"}]

1.新增和修改

新增和修改可以分開,但是為了省代碼就合并在一起了。

deploy.post('/add-modify', async (ctx) => {// 這里使用的bodyParser來解析post請求傳來的數據,id是用來查找之前有的數據并進行修改,新增數據的在前臺應該將id設置為空  let id = ctx.request.body.id  let params = ctx.request.body.params  let writeJson = () => {    return new Promise((resolve,reject)=>{    // fs模塊讀取json文件 對fs、path模塊不熟悉的可以去查下官方文檔      fs.readFile(path.join(__dirname, '/data/project.json'),function(err,data){        if(err){        // 報錯返回          resolve({code: -1, msg: '新增失敗' + err})          return console.error(err);        }        let jsonData = data.toString();//將二進制的數據轉換為字符串        jsonData = JSON.parse(jsonData);//將字符串轉換為json對象        // 有id值=>修改 無id值=>新增        if (id) {          jsonData.splice(jsonData.findIndex(item => item.id === id), 1, params)        } else {        // 有重復 => 返回-1 無重復 => 將params加到json數組末尾          let hasRepeat = jsonData.filter((item) => item.id === params.id);          hasRepeat ? resolve({code: -1, msg: '新增失敗,有重復項目id'}) : jsonData.push(params);        }        //因為nodejs的寫入文件只認識字符串或者二進制數,所以把json對象轉換成字符串重新寫入json文件中        let str = JSON.stringify(jsonData);        fs.writeFile(path.join(__dirname, '/data/project.json'),str,function(err){          if(err){            resolve({code: -1, msg: '新增失敗' + err})          }          resolve({code: 0, msg: '新增成功'})        })      })    })  }  // 返回給前端  ctx.body = await writeJson()})

2.刪除

刪除,這里使用的get方法

deploy.get('/delete', async (ctx) => {  let id = ctx.request.query.id  let deleteJson = () => {    return new Promise((resolve,reject)=>{      fs.readFile(path.join(__dirname, '/data/project.json'),function(err,data){        if(err){          resolve({code: -1, msg: '刪除失敗' + err})          return console.error(err);        }        let jsonData = data.toString();//將二進制的數據轉換為字符串        jsonData = JSON.parse(jsonData);//將字符串轉換為json對象        // 過濾出所存item的id和前端傳來id不等的 item ,下面提供了兩種方法filter和splice        jsonData = jsonData.filter((item) => item.id !== id);        // jsonData.splice(jsonData.findIndex(item => item.id === id), 1)        let str = JSON.stringify(jsonData);        fs.writeFile(path.join(__dirname, '/data/project.json'),str,function(err){          if(err){            resolve({code: -1, msg: '刪除失敗' + err})          }          resolve({code: 0, msg: '刪除成功'})        })      })    })  }  ctx.body = await deleteJson()})

3.查詢

deploy.get('/find', async (ctx) => {// 兩種查詢方式 1.id為空 => 查詢全部 2.id有值 => 查詢單個  let id = ctx.request.query.id  let findJson = () => {    return new Promise((resolve,reject)=>{      fs.readFile(path.join(__dirname, '/data/project.json'),function(err,data){        if(err){          resolve({code: -1, msg: '查詢失敗' + err})          return console.error(err);        }        let jsonData = data.toString();//將二進制的數據轉換為字符串        jsonData = JSON.parse(jsonData);//將字符串轉換為json對象        // 有id值=>單個 無id值=>全部        if (id) {          jsonData = jsonData.filter((item) => item.id === id);          resolve({code: 0, data: jsonData})        } else {          resolve({code: 0, data: jsonData})        }      })    })  }  ctx.body = await findJson()})

當然,上面提供的還沒有支持分頁,想要實現分頁,需求改變json格式,如下:

{ "data": [{"id": 1, "name": "唐僧"},      {"id": 2, "name": "孫悟空"},      {"id": 3, "name": "豬八戒"},      {"id": 4, "name": "沙和尚"}], "currentPage": 1, "pageSize": 4, "pageNum": 1, "total": 4}

新增page一些查詢參數,并在使用傳入的參數取對應數據。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性极品xxxx做受| 国产成人精品a视频一区www| 亚洲午夜女主播在线直播| 一本一本久久a久久精品牛牛影视| 久久这里只有精品视频首页| 国产精品免费观看在线| 国产剧情日韩欧美| 亚洲最新av在线网站| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产精品电影| 2023亚洲男人天堂| 久久亚洲精品毛片| 国产欧美亚洲精品| 久久理论片午夜琪琪电影网| 国产欧美精品一区二区三区介绍| 狠狠色狠狠色综合日日五| 日韩精品在线观看视频| 欧美激情欧美激情在线五月| 国产成人精彩在线视频九色| 色噜噜亚洲精品中文字幕| 久久777国产线看观看精品| 欧美色欧美亚洲高清在线视频| 51精品在线观看| 日韩美女视频免费在线观看| 中文日韩电影网站| 国产亚洲a∨片在线观看| 在线电影中文日韩| 色综合伊人色综合网| 亚洲精品美女久久久久| 久久伊人精品一区二区三区| 国产精品日韩在线一区| 日韩小视频在线| 免费不卡欧美自拍视频| 911国产网站尤物在线观看| 欧美大片免费观看在线观看网站推荐| 久久久久久久久久久人体| 亚洲电影中文字幕| 最新国产精品拍自在线播放| 91在线高清视频| 黑人狂躁日本妞一区二区三区| 国产欧美精品在线| 97热在线精品视频在线观看| 日韩视频免费在线| 黑人巨大精品欧美一区二区三区| 97视频免费观看| 欧美丰满片xxx777| 欧美国产在线视频| 尤物九九久久国产精品的特点| 91免费看片在线| 欧美激情在线有限公司| 亚洲一区二区三区sesese| 国产在线观看不卡| 亚洲欧美日韩区| 亚州国产精品久久久| 国产成人午夜视频网址| 国产精品久久婷婷六月丁香| 久热在线中文字幕色999舞| 久久久久国产一区二区三区| 日韩一区二区三区在线播放| 久久久精品久久久| 精品精品国产国产自在线| 国产91在线播放精品91| 国产精品久久久久久久久久新婚| 在线视频免费一区二区| 亚洲高清免费观看高清完整版| 国产精品吹潮在线观看| 国产视频精品免费播放| 伦伦影院午夜日韩欧美限制| 日韩av电影手机在线观看| 久久精品国产成人精品| 亚洲国产精品国自产拍av秋霞| 久久久精品视频在线观看| 欧美激情va永久在线播放| 亚洲国产精品推荐| 久久影视电视剧免费网站清宫辞电视| 国产精品h片在线播放| 日韩视频在线免费观看| 久久久久久久久中文字幕| 欧美三级欧美成人高清www| 欧美一级电影免费在线观看| 国产精品91在线| 欧美成人免费观看| 91国偷自产一区二区三区的观看方式| 久国内精品在线| 国产一区二区三区在线观看网站| 国产精品久久久精品| 欧美高清视频一区二区| 国产精品青青在线观看爽香蕉| 成人福利视频网| 久久精品国产96久久久香蕉| 日韩中文在线中文网三级| 亚洲精品自拍第一页| 欧美激情一二区| 九九热精品视频| 国产亚洲美女精品久久久| 国产精品成人aaaaa网站| 欧美国产日韩一区二区三区| 国产精品久久不能| 久久精品国产亚洲精品2020| 欧美激情二区三区| 2019精品视频| 精品日韩美女的视频高清| 一区二区日韩精品| 日韩精品黄色网| 亚洲欧美日韩一区二区在线| 中文字幕一精品亚洲无线一区| 亚洲一区久久久| 亚洲一品av免费观看| 成人免费xxxxx在线观看| 精品动漫一区二区| 亚洲人成在线播放| 日韩高清免费在线| 91丨九色丨国产在线| 亚洲国内精品在线| 不卡在线观看电视剧完整版| 91精品国产高清久久久久久91| 欧美久久精品一级黑人c片| 亚洲欧美精品伊人久久| 成人xxxx视频| 欧美午夜性色大片在线观看| 国产在线精品播放| 久久国产精品免费视频| 丰满岳妇乱一区二区三区| 尤物精品国产第一福利三区| 国产精品久久久久久超碰| 亚洲美女中文字幕| 亚洲人成网7777777国产| 日韩影视在线观看| 国产欧美 在线欧美| 日韩大陆毛片av| 国产网站欧美日韩免费精品在线观看| 久久久久久亚洲精品| 7m精品福利视频导航| 亚洲精品丝袜日韩| 奇门遁甲1982国语版免费观看高清| 国产suv精品一区二区三区88区| 97国产一区二区精品久久呦| 国产美女扒开尿口久久久| 亚洲最大成人在线| 亚洲自拍偷拍视频| 欧美激情视频在线观看| 精品无人区太爽高潮在线播放| 久久97精品久久久久久久不卡| 日本精品久久中文字幕佐佐木| 国产一区深夜福利| 久久精品视频一| 国内成人精品一区| 成人激情黄色网| 成人久久久久爱| 91av视频在线播放| 欧美电影在线播放| 亚洲成色777777在线观看影院| 久久在线免费视频| 欧美精品久久久久a| 成人黄色av网站| 亚洲一区精品电影| 尤物yw午夜国产精品视频明星| 中文字幕亚洲在线| 亚洲精品久久久一区二区三区| 68精品久久久久久欧美| 日本亚洲欧美三级| 一色桃子一区二区| 日韩av在线天堂网| 国产成人精品在线播放|