基于nodejs的本地文件增删改查的工具代码
一、代码封装
这是一个使用node.js实现的对本地文件进行增删改查的工具代码封装,其中代码结尾包含了使用方法示例,具体封装代码如下:
// jsonTool.js
const fs = require('fs');
const path = require('path');
// 定义 JSON 文件的路径
const filePath = path.join(__dirname, '../data.json');
// 读取 JSON 文件内容
function readJsonData() {
try {
const fileContent = fs.readFileSync(filePath);
return JSON.parse(fileContent);
} catch (error) {
if (error.code === 'ENOENT') {
return []; // 文件不存在时返回空数组
} else {
throw error; // 其他错误抛出异常
}
}
}
// 写入 JSON 文件内容
function writeJsonData(data) {
fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
}
// 增加数据到 JSON 文件
function addData(data) {
const jsonData = readJsonData();
jsonData.push(data);
writeJsonData(jsonData);
}
// 根据属性名和属性值删除数据
function deleteData(propName, propValue) {
const jsonData = readJsonData();
const index = jsonData.findIndex(item => item[propName] === propValue);
if (index !== -1) {
jsonData.splice(index, 1);
writeJsonData(jsonData);
} else {
throw new Error('未找到对应的数据');
}
}
// 根据属性名和属性值修改数据
function updateData(propName, propValue, newData) {
const jsonData = readJsonData();
const index = jsonData.findIndex(item => item[propName] === propValue);
if (index !== -1) {
jsonData[index] = {...jsonData[index], ...newData};
writeJsonData(jsonData);
} else {
throw new Error('未找到对应的数据');
}
}
// 分页查找 JSON 数据
function findDataWithPagination(propName, propValue, pageSize, pageNum) {
const jsonData = readJsonData();
const startIndex = (pageNum - 1) * pageSize;
const endIndex = startIndex + pageSize;
const filteredData = jsonData.filter(item => item[propName] === propValue);
return {
total: filteredData.length,
page: pageNum,
pageSize: pageSize,
data: filteredData.slice(startIndex, endIndex)
};
}
// 导出模块的方法
module.exports = {
addData,
deleteData,
updateData,
findDataWithPagination
};
二、使用示例
const { addData, deleteData, updateData, findDataWithPagination } = require('./jsonTool'); // 引入模块
// 测试数据
const newData = {
id: 2,
name: '李四',
age: 25
};
// 增加数据
addData(newData);
// 修改数据
updateData('id', 2, { age: 26 }); // 将 id 为 2 的数据中的 age 修改为 26
// 删除数据
try {
deleteData('id', 1);
} catch (error) {
console.error(error.message);
}
// 分页查找数据
const pagedData = findDataWithPagination('name', '李四', 10, 1); // 查找 name 为 '李四' 的数据,每页显示 10 条,第 1 页
console.log(pagedData);
基于nodejs的本地文件增删改查的工具代码的更多相关文章
- 【基础篇】js对本地文件增删改查--改
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- 【基础篇】js对本地文件增删改查--删
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- 【基础篇】js对本地文件增删改查--增
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- 【基础篇】js对本地文件增删改查
[基础篇] js对本地文件增删改查--增 js对本地文件增删改查--删 js对本地文件增删改查--改 js对本地文件增删改查--查
- 【基础篇】js对本地文件增删改查--查
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- MyBatis学习(三)MyBatis基于动态代理方式的增删改查
1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...
- 基于vue-easytable实现数据的增删改查
基于vue-easytable实现数据的增删改查 原理:利用vue的数据绑定和vue-easetable的ui完成增删改查 后端接口: 1.条件查询表中数据 http://localhost:4795 ...
- java实现xml文件增删改查
java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...
- iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...
- Mybatis(3) 映射文件-增删改查
映射文件: 映射文件是根据数据库模型生成的编写sql脚本xml文件, mapper标签中namespace属性值为对应模型实体类的全类名. <?xml version="1.0&quo ...
随机推荐
- Ceph-集群内分布式存储解决方案及基于Docker的部署
打造集群高可用分布式存储Ceph很早以前在玩集群的时候就折腾过分布式存储服务来作为跨节点的数据共享和可靠存储,以前尝试过GlusterFS,但是由于读写速度实在是太低,就放弃了.见基于GlusterF ...
- MySQL中怎么分析性能?
MySQL中主要有4种方式可以分析数据库性能,分别是慢查询日志,profile,Com_xxx和explain. 慢查询日志 先用下面命令查询慢查询日志是否开启, show variables lik ...
- SQL Server 中的事务管理
SQL Server 中的事务是什么? 事务是应该作为一个单元执行的一组 SQL 语句.这意味着事务确保所有命令都成功或都不成功.如果事务中的命令之一失败,则所有命令都失败,并且在数据库中修改的任何数 ...
- CS硕士全日制考研资料(含完整复习计划)
择校信息 华东师范 2021招生专业考试科目:https://yjszs.ecnu.edu.cn/system/sszszyml_list.asp 计算机科学与技术:https://yjszs.ecn ...
- 接口介绍以及定义和使用--java进阶day02
1.接口介绍 日常生活中有很多接口,比如手机数据线的接口和手机充电器的接口 我们转换视角,站在设计者的角度思考接口,接口体现出规则,手机的接口大小和数据线的接口大小必须一致,各种接口的大小都要一致,都 ...
- 免费包白嫖最新DeepSeek-V3驱动的MCP与SemanticKernel实战教程 - 打造智能应用的终极指南
如果您需要深入交流了解请加入我们一块交流 https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=b7co0430-d ...
- hexo搭建博客记录
这是一次hexo搭建博客并引入archer主题的使用记录. 环境准备 首先是hexo工具的安装使用,这个工具是依赖于nodejs的一个命令行工具,并且各种使用也依赖于node生态,所以需要先进行nod ...
- 正反代理-nginx安装
参考文章:https://www.cnblogs.com/ysocean/p/9384877.html 先预祝一下成功 废话不多说,开始吧,步骤不多 下载地址 https://nginx.org/en ...
- (原创)[开源][.Net Framework 4.5] SimpleMVVM(极简MVVM框架)更新 v1.1,增加NuGet包
一.前言 意料之外,也情理之中的,在主业是传统行业的本人,技术的选型还是落后于时代. 这不,因现实需要,得将大库中的 WPF MVVM 相关部分功能拆分出来独立使用,想着来都来了,就直接开源得了,顺便 ...
- 🎀dubbo QOS介绍及命令
简介 在Dubbo中,QoS(Quality of Service)功能是一个非常重要的特性,用于提供对运行时服务的查询和控制能力. QoS的概念源自网络设备中的服务质量保障机制,但在Dubbo中,它 ...