operation.js
const {
rejects
} = require('assert')
const fs = require('fs')
const {
resolve
} = require('path')
/* 查询数据 */
const queryData = ({
path
}) => {
return new Promise((resolve, rejects) => {
fs.readFile(path, (err, data) => {
if (err) {
rejects(err)
}
resolve(JSON.parse(data))
})
})
}
/*
写入数据
path,数据,插入方式
*/
const addData = async ({
path,
data,
way = "push"
}) => {
let queryDataRes = await queryData({
path
})
if (queryDataRes) {
queryDataRes = JSON.parse(queryDataRes)
}
if (way == "push") { //末尾
queryDataRes.push(data)
}
if (way == "unshift") { //开头
queryDataRes.unshift(data)
}
return new Promise((resolve, rejects) => {
fs.writeFile(path, JSON.stringify(queryDataRes), (err, data) => {
if (err) {
rejects(err)
}
resolve({
status: "success"
})
})
})
}
/*
删除数据
*/
const deleteData = async ({
path,
id
}) => {
// //1.查询数据
let queryDataRes = await queryData({
path
})
let checkIdRes = await checkId({
path,
id
})
if (checkIdRes === 0) {
return 'id不存在!!'
}
//2.根据id删除数据
queryDataRes = queryDataRes.filter(el => {
return el.id !== id
})
return new Promise((resolve, rejects) => {
fs.writeFile(path, JSON.stringify(queryDataRes), (err, data) => {
if (err) {
rejects(err)
}
resolve({
status: "success"
})
})
})
}
/*
编辑数据
*/
const editData = async ({
path,
id,
data
}) => {
//1.查询数据
let queryDataRes = await queryData({
path
})
let checkIdRes = await checkId({
path,
id
})
if (checkIdRes === 0) {
return 'id不存在!!'
}
//2.根据id更新
let index = queryDataRes.findIndex(el => {
return el.id == id
})
if(!data.hasOwnProperty("id")){
data.id=id
}
if(!data.hasOwnProperty("col")){
data.col=queryDataRes[index].col
}
queryDataRes[index]=data
return new Promise((resolve, rejects) => {
fs.writeFile(path, JSON.stringify(queryDataRes), (err, data) => {
if (err) {
rejects(err)
}
resolve({
status: "success"
})
})
})
}
/*
校验id
*/
const checkId = async ({
path,
id,
}) => {
//1.查询数据是否存在id -- (1)不存在自动生成 且返回id不存在 (2)接受id与id不匹配
let queryDataRes = await queryData({
path
})
//数据不存在id的情况
let isHasId = queryDataRes.every(el => {
return el.hasOwnProperty("id")
})
if (!isHasId) {
queryDataRes.forEach((el, index) => {
el.col = index
el.id = generateId()
})
fs.writeFile(path, JSON.stringify(queryDataRes), (err, data) => {
if (err) {
rejects(err)
}
resolve({
status: "success"
})
})
return 0
}
//id不匹配的情况
let idList = queryDataRes.filter(el => {
return el.id == id
})
if (!idList.length) {
return 0
}
}
/*
util函数
*/
const generateId = () => { //获取随机id
const s = [];
const hexDigits = '0123456789abcdef';
for (let i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
// bits 12-15 of the time_hi_and_version field to 0010
s[14] = '4';
// bits 6-7 of the clock_seq_hi_and_reserved to 01
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
s[8] = s[13] = s[18] = s[23] = '-';
const uuid = s.join('');
return uuid;
}
module.exports = {
queryData,
addData,
deleteData,
editData
}
app.js
const fs = require('fs')
const express = require('express')
const {
queryData,
addData,
deleteData,
editData
} = require('./operation')
const app = express()
app.use(express.static('./data/'))
/* end */
//得到数据
app.get('/getData', async (req, res) => {
let queryDataRes = await queryData({
path: "./data/af.json"
})
if (queryDataRes) {
res.send(queryDataRes)
}
})
//新增数据
app.get('/addData', async (req, res) => {
let obj = {
"name": "3",
"age": "3",
"asd": "3"
}
let addDataRes = await addData({
path: "./data/data.json",
data: obj,
way: "unshift"
})
if (addDataRes) {
res.send("添加成功!")
}
})
//删除数据
app.get('/deleteData', async (req, res) => {
let deleteDataRes = await deleteData({
path: "./data/data.json",
id: "17a05538-623c-465c-805c-3f506da858d0"
})
if (deleteDataRes) {
res.send(deleteDataRes)
}
})
//编辑数据
app.get('/editData', async (req, res) => {
let data= {
"name": "睡觉",
"age": "150",
"asd": "84794393-8cf7-462c-86f7-52de9f54caf3",
"id": "d64c1753-4c8e-4145-8c8c-28846fd37239",
"col": 4
}
let id="d64c1753-4c8e-4145-8c8c-28846fd37239"
let editDataRes = await editData({
path:"./data/data.json",
id,
data
})
if(editDataRes){
res.send("success!!")
}
})
app.listen(8090, () => console.log('localhost:8090'))
data.json
[{
"name": "吃饭",
"age": "15",
"asd": "324234",
"id": "98570e4b-2b7d-4396-8602-eda23d6f7162",
"col": 1
}, {
"name": "吃饭",
"age": "15",
"asd": "324234",
"id": "b1240772-db0a-42e4-8d14-6ba0a24aa2b1",
"col": 2
}, {
"name": "吃饭",
"age": "15",
"asd": "324234",
"id": "51e9a972-766c-4dd2-bd10-7cf4808b85b7",
"col": 3
}, {
"name": "睡觉",
"age": "150",
"asd": "84794393-8cf7-462c-86f7-52de9f54caf3",
"id": "d64c1753-4c8e-4145-8c8c-28846fd37239",
"col": 4
}]
标签:const,该查,queryDataRes,json,let,增删,path,data,id
From: https://www.cnblogs.com/mywifeisMsHu/p/16813037.html