基于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);

posted @ 2024-08-27 14:21  莫颀  阅读(23)  评论(0编辑  收藏  举报