首页 > 编程语言 >基于nodejs的本地文件增删改查的工具代码

基于nodejs的本地文件增删改查的工具代码

时间:2024-08-27 14:26:03浏览次数:5  
标签:function index const nodejs 改查 jsonData item JSON 增删

一、代码封装

这是一个使用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);

标签:function,index,const,nodejs,改查,jsonData,item,JSON,增删
From: https://www.cnblogs.com/bokemoqi/p/18382608

相关文章

  • SpringBootWeb案例-增删改查
    目录准备工作环境搭建开发规范Restful 统一相应结果部门管理查询前后端联调删除新增员工管理分页查询分页插件PageHelper条件分页查询删除新增准备工作环境搭建准备数据库表(dept、emp)创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、......
  • nodeJS中的事件机制
    events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http、fs等。本文将详细介绍nodeJS中的事件机制EventEmitter多数Node.js核心API都是采用惯用的异步事件驱动架构,其中某些类型的对象(称为触发器)会周期性地触发命名事件来调用函数对象(监听器)。例......
  • NodeJS云观影应用系统演示录像-计算机毕业设计源码60580
    摘 要随着互联网与移动互联网迅速普及,网络上的电影娱乐信息数量相当庞大,人们对获取感兴趣的电影娱乐信息的需求越来越大,个性化的基于Vue框架实现云观影应用系统成为一个热门。然而电影信息的表示相当复杂,因此需要开发一个基于Vue框架实现云观影应用系统设计与实现的电影信......
  • nodejs的事件机制
    nodejs的事件机制Node.js的事件机制是通过内置的 EventEmitter 类来实现的。这个类定义在 events 模块中,可以被用来创建可发送事件的类。以下是一个简单的例子,展示了如何使用 EventEmitter 来创建一个发送事件的对象,并为其添加事件监听器:  constEventEm......
  • 基于nodejs+vue办公系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着企业规模的不断扩大与业务复杂性的增加,传统的办公模式已难以满足高效、便捷的管理需求。在现代企业中,办公系统的智能化与集成化成为提升工作效率、优化......
  • 基于nodejs+vue办公物资管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着企业规模的不断扩大与业务复杂度的提升,办公物资管理成为企业日常运营中不可或缺的一环。传统的手工记录与人工管理方式已难以满足现代企业对效率、准确......
  • 基于nodejs+vue办公室资产登记系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着现代企业规模的扩大与管理的精细化,办公室资产管理成为了一项日益复杂且重要的任务。传统的手工记录或简单的电子表格管理方式已难以满足高效、准确、实......
  • 基于nodejs+vuevivi[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在当今数字化时代,电子商务平台的蓬勃发展极大地改变了人们的消费习惯,推动了商业模式的创新。随着移动互联网技术的普及,消费者对购物体验的需求日益个性化与......
  • 基于nodejs+vuevegetableMarket[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加快和消费者健康意识的提升,蔬菜市场作为日常生活中不可或缺的一部分,其运营模式与效率正面临着新的挑战与机遇。传统的蔬菜市场往往存在信......
  • 基于nodejs+vueUhome记录生活[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着科技的飞速发展,智能家居与数字化生活已成为现代家庭的新常态。在这样的背景下,"Uhome记录生活"应运而生,旨在通过构建一个集用户管理、家庭成员互动、家庭......