示例描述:size有1,10,100三种值,需要根据size值判断需要向哪个文件中写入对应数据,如果用if else语句来判断,则path、message以及写入文件部分代码均需大量重复,仅有小部分不同。
则:类似需求可以通过将不同数据部分存放在对象中,使用ES6的解构语法从该对象中提取相应数据。并将它们传递给后续函数或方法中使用。
示例代码:
const fs = require('fs')
const path = require('path')
let data = {
1:[],
10:[],
100:[]
}
// 向文件中写入数据
function writeData(queries,cnt,time,size,database){
const fileData = {
1: {
path: path.join(__dirname, '../public/linesData/linesData1.json'),
message: 'linesData1数据写入成功'
},
10: {
path: path.join(__dirname, '../public/linesData/linesData10.json'),
message: 'linesData10数据写入成功'
},
100: {
path: path.join(__dirname, '../public/linesData/linesData100.json'),
message: 'linesData100数据写入成功'
}
}
//通过size参数判断需要向哪个属性中写入数据
const jsonData = data[size];
jsonData.push(handleDataToJson(queries, cnt, time, database));
//通过size判断需要向哪个文件中写入数据,并输出对应的成功信息
const { path: filePath, message: successMessage } = fileData[size];
//向对应文件中写入数据
fs.writeFile(path.join(filePath),JSON.stringify(jsonData, null, 2),(err)=>{
if(err) throw err;
console.log(successMessage);
})
}