需求:通过db同级myfile.js文件在db/data.json中新增一条新的数据
data.json中原数据如下
[{"name":"小王"},{"name":"小李"}]
新增后数据如下
[{"name":"小王"},{"name":"小李"},{"name":"小徐"}]
1.引入模块
const fs = require('fs')
const path = require('path')
2.读取data.json中数据内容,常量接收(变量也行)
const content = fs.readFileSync(path.join(__dirname, './db/data.json'), 'utf-8')
3.数据类型转换
let arr = JSON.parse(content)
arr.push({ name: '小徐' })
因读取的数据为string类型,因此需要将其转换成数组后再向数组中添加新元素,若原数据无[],则可直接通过fs.appendFileSync向原数据中新增数据
4.通过fs.writeFileSync向data.json中写入数据,覆盖其原数据
fs.writeFileSync(path.join(__dirname, './db/data.json'), JSON.stringify(arr))
5.读取写入后的数据
const rs = fs.readFileSync(path.join(__dirname, './db/data.json'), 'utf8')
console.log(rs)
完整代码(同步版)
const fs = require('fs')
const path = require('path')
const content = fs.readFileSync(path.join(__dirname, './db/data.json'), 'utf-8')
// let res = JSON.parse(content).push({ name: '小张' }) arr.push返回值为新数组的长度
let arr = JSON.parse(content)
arr.push({ name: '小张' })
fs.writeFileSync(path.join(__dirname, './db/data.json'), JSON.stringify(arr))
const rs = fs.readFileSync(path.join(__dirname, './db/data.json'), 'utf8')
console.log(rs);
完整代码(异步版)
const fs = require('fs')
const path = require('path')
fs.readFile(path.join(__dirname, 'db/data.json'), 'utf8', function (err, data) {
if (err) {
return console.log(err)
} else {
let arr = JSON.parse(data)
arr.push({ name: '小张' })
fs.writeFile(path.join(__dirname, 'db/data.json'), JSON.stringify(arr), (err, data) => {
if (err) {
console.log(err)
} else {
console.log('写入成功');
}
})
}
})