NodeJS Review:在次级文件中添加新的内容

118 阅读1分钟

需求:通过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('写入成功');
			}
		})
	}
})