基于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 ...
随机推荐
- vuex 踩坑记之unknown local mutation type
使用模块化定义vuex时,出现了这么个错误unknown local mutation type,检查好久发现单词并没有写错,代码如下: // 引入请求数据的方法 import { reqUsers ...
- Keil中设置显示空白符,并将Tab键使用4个空格代替
前言 Keil 的默认设置是没有将 Tab 键使用空格代替的,不同的文本编辑器对 Tab 键所占的空格数不同,有占 2 个空格的,也有占 4 个空格的,这就导致同样的代码在不同的编辑器中缩进不同,虽不 ...
- kubectl port-forward bind: address already in use unable
前言 本地的 8080 映射到 Pod 的 80,kubectl 会把这个端口的所有数据都转发给集群内部的 Pod kubectl port-forward wp-pod 8080:80 & ...
- VRRP+BFD实验
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的工作原理主要涉及多个路由器(或具备路由功能的设备)协同工作,通过VRRP报文和优先级机制来选举出一 ...
- docker 中几个节点意外宕机 pxc 无法启动
docker 意外宕机,PXC启动不了解决方法 由于 意外宕机 docker start pxc 节点后闪退,解决方法如下 从节点中找任意一个数据卷映射目录,修改参数 [root@izuf64gdeg ...
- 从DeepSeek看算法备案&大模型备案
一.deepseek的备案情况 (一)算法备案情况 在算法备案系统网站上,北京深度求索人工智能基础技术研究有限公司和杭州深度求索人工智能基础技术研究有限公司分别进行了两个算法备案.从公司名称来看,正如 ...
- IDEA target中没有class文件/target中有class没有yml文件/yml文件不显示叶子
target中没有class文件.表现为文件显示红波浪线,但是点进去自己又好了,但是编译会说找不到.点进入target文件夹发现没有class文件,只有yml文件或者什么都没有 解决方法:rebuil ...
- luat编程MQTT的自动重连失败分析
正确用法 查看代码 --- 模块功能:MQTT客户端处理框架 -- @author openLuat -- @module mqtt.mqttTask -- @license MIT -- @copy ...
- 拆解 MCP 的运行原理
注意:此实验非常消耗模型 Token 背景:最近 MCP 火的发烫,什么是 MCP 就不讨论了,比较好奇 MCP 具体的运行逻辑. 现象:同时使用 Cursor 和 MaxKB 对接腾讯地图的 MCP ...
- Python科学计算系列8—矩阵
1.矩阵构造 代码如下: from sympy import * m1 = Matrix([[1, 2], [2, 0], [3, 4]]) # 构造单位矩阵 m2 = eye(3) # 构造零矩阵 ...