返回顶部
首页 > 资讯 > 前端开发 > JavaScript >nodejs框架如何对json文件进行增删改查
  • 1091
分享到

nodejs框架如何对json文件进行增删改查

2024-04-02 19:04:59 1091人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“nodejs框架如何对JSON文件进行增删改查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs框架如何对json文件进行增删

这篇文章主要为大家展示了“nodejs框架如何对JSON文件进行增删改查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs框架如何对json文件进行增删改查”这篇文章吧。

想使用nodejs(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一些查询参数,并在使用传入的参数取对应数据。

以上是“nodejs框架如何对json文件进行增删改查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: nodejs框架如何对json文件进行增删改查

本文链接: https://lsjlt.com/news/74819.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • nodejs框架如何对json文件进行增删改查
    这篇文章主要为大家展示了“nodejs框架如何对json文件进行增删改查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs框架如何对json文件进行增删...
    99+
    2024-04-02
  • php对json文件的增删改查
    随着互联网的发展,数据的交互越来越频繁,其中JSON(JavaScript Object Notation)成为大家喜爱的数据传输格式之一。因此,处理JSON数据变得越来越重要。本文将介绍使用PHP处理JSON文件的增、删、改、查操作。JS...
    99+
    2023-05-24
  • nodejs如何操作mongodb进行增删改查
    这篇“nodejs如何操作mongodb进行增删改查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“nodejs如何操作mon...
    99+
    2023-07-05
  • thinkphp5框架如何通过模型进行增删改查
    这篇文章主要介绍“thinkphp5框架如何通过模型进行增删改查”,在日常操作中,相信很多人在thinkphp5框架如何通过模型进行增删改查问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp5框架...
    99+
    2023-06-20
  • nodejs项目中如何增删改查文件
    本篇内容主要讲解“nodejs项目中如何增删改查文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs项目中如何增删改查文件”吧!这里主要介绍nodej...
    99+
    2024-04-02
  • Python如何利用txt文件对Mysql进行增删改查移
    小编给大家分享一下Python如何利用txt文件对Mysql进行增删改查移,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、关系数据库1.数据模型实体间的关系分为...
    99+
    2023-06-22
  • Python利用txt文件对Mysql进行增删改查移
    目录一、关系数据库1.数据模型2.面相对象模型二、了解关系数据库的概念和特点1.基本概念2.基本特点三、常用字段数据类型四、在spyder中调用文件TXT内容进入程序一、关系数据库 ...
    99+
    2024-04-02
  • 在ThinkPHP框架中怎么进行增删改查操作
    这篇文章主要讲解了“在ThinkPHP框架中怎么进行增删改查操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在ThinkPHP框架中怎么进行增删改查操作”吧!一、增加记录在ThinkPHP...
    99+
    2023-07-06
  • 如何搭建MyBatis-Plus框架并进行数据库增删改查功能
    本篇内容主要讲解“如何搭建MyBatis-Plus框架并进行数据库增删改查功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何搭建MyBatis-Plus框架并进行数据库增删改查功能”吧!搭建...
    99+
    2023-06-09
  • 如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查
    小编给大家分享一下如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原题目要求:(1)通过“添加联系人”按钮,跳转...
    99+
    2024-04-02
  • php+layui如何进行增删改查操作
    本文小编为大家详细介绍“php+layui如何进行增删改查操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“php+layui如何进行增删改查操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,我们需要数据...
    99+
    2023-07-05
  • 搭建MyBatis-Plus框架并进行数据库增删改查功能
    目录1.搭建环境2.项目搭建3.配置maven4.项目结构5.配置 MapperScan 注解 6.创建实体7.创建接口8.测试 8.1 updateById 8.2 se...
    99+
    2024-04-02
  • 在ThinkPHP框架下怎么进行增删改操作
    本篇内容主要讲解“在ThinkPHP框架下怎么进行增删改操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在ThinkPHP框架下怎么进行增删改操作”吧!一、增加记录在ThinkPHP中新增一条...
    99+
    2023-07-05
  • 怎么使用Node.js进行JSON数据的增删改查
    这篇文章主要介绍“怎么使用Node.js进行JSON数据的增删改查”,在日常操作中,相信很多人在怎么使用Node.js进行JSON数据的增删改查问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Node....
    99+
    2023-07-05
  • java怎么对数据库进行增删改查
    在Java中进行数据库的增删改查操作,通常需要使用JDBC(Java Database Connectivity)来实现。以下是一个...
    99+
    2023-08-08
    java 数据库
  • mysql如何进行表数据的增删改查
    这篇文章主要介绍mysql如何进行表数据的增删改查,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在mysql中,可以使用SELECT语句进行表数据的查询,使用INSERT语句...
    99+
    2024-04-02
  • nodejs如何操作mysql实现增删改查
    这篇文章将为大家详细讲解有关nodejs如何操作mysql实现增删改查,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先需要安装mysql模块:npm install m...
    99+
    2024-04-02
  • 如何将xml文件作为数据库进行学生的增删改查
    如何将xml文件作为数据库进行学生的增删改查,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.xml文件:<xml versi...
    99+
    2024-04-02
  • nodejs中怎么对json文件进行读写操作
    nodejs中怎么对json文件进行读写操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。nodejs 读json文件var&...
    99+
    2024-04-02
  • php如何使用mongodb进行增删查改操作
    本文小编为大家详细介绍“php如何使用mongodb进行增删查改操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何使用mongodb进行增删查改操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、M...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作