小案例:javascript实现对json文件的增删改查
下面为books.json格文件的数据[{"id": 1,"bookName": "完美世界","author": "辰东","hero": "石昊"}, {"id": 2,"bookName": "武庚纪","author": "沈乐平","hero": "武庚"}, {"id": 4,"bookName": "天行九歌","author": "陈岚","hero": "韩非"}
·
下面为books.json格文件的数据
[{
"id": 1,
"bookName": "完美世界",
"author": "辰东",
"hero": "石昊"
}, {
"id": 2,
"bookName": "武庚纪",
"author": "沈乐平",
"hero": "武庚"
}, {
"id": 4,
"bookName": "天行九歌",
"author": "陈岚",
"hero": "韩非"
}]
下面为books.js文件的数据
// 实现对json数据的增删改查
// 先引入所需的模块
let { join } = require('path')
let { readFile, writeFile } = require('fs')
const { json } = require('stream/consumers')
// 拼接json文件的绝对路径
let filePath = join(__dirname, 'books.json')
// 查询数据 --> 其实就是查询文件的内容
function query() {
// err为错误 data为查询到的数据
// 当没有错误时,err为空对象,有错误时,err内是错误信息
readFile(filePath, 'utf-8', (err, data) => {
// 如果有错误就抛出错误信息,并不再向下执行
if (err) throw err
// 将获取到的字符串数据转为对象类型
let res = JSON.parse(data)
console.log(res) // 查询到的数据
})
}
// query()
// 增加数据
function add(obj) {
readFile(filePath, 'utf-8', (err, data) => {
if (err) throw err
let res = JSON.parse(data)
// 需要得到id,id为数组中最后一个图书的id+1
let index = res[res.length - 1].id + 1
// 向obj对象中添加id属性
obj.id = index
res.push(obj)
// 写入到json文件中 --> 需要把res转为字符串写入到json文件
writeFile(filePath, JSON.stringify(res), err => {
if (err) throw err
console.log('添加成功')
})
})
}
// add({ bookName: "斗罗大陆", author: "唐家三少", hero: "唐三" })
// 修改数据 --> 其实就是把原数据删除,把修改的数据放进去
// 根据图书id修改
function upData(obj) {
readFile(filePath, 'utf-8', (err, data) => {
if (err) throw err
let res = JSON.parse(data)
// 使用数组的splice方法
// splice(索引,删除的个数,新增的数据)
// 可以用数组的findIndex方法获取索引
// findIndex(item =>return 条件) 返回符合条件的数据的索引
let index = res.findIndex(item => obj.id === res.id)
res.splice(index, 1, obj)
writeFile(filePath, JSON.stringify(res), err => {
if (err) throw err
console.log('修改成功')
})
})
}
// 修改id为3的图书信息为:天官赐福、墨香铜臭、谢怜
// upData({ id: 3, bookName: "天官赐福", author: "墨香铜臭", hero: "谢怜" })
// 删除数据
// 根据图书的id删除对应的数据
function del(id) {
readFile(filePath, 'utf-8', (err, data) => {
if (err) throw err
let res = JSON.parse(data)
// 数组的filter方法可以返回满足筛选条件的结果
let r = res.filter(item => {
// 只有当图书的id不为3,才返回结果
return id !== item.id
})
writeFile(filePath, JSON.stringify(r), err => {
if (err) throw err
console.log('删除成功')
})
})
}
// 删除图书id为3的数据
del(3)
更多推荐
已为社区贡献9条内容
所有评论(0)