在节点 js 中通过循环编辑 JSON 文件
Edit JSON file through loop in node js
>我正在制作一个监视器,如果服务器启动或关闭,它将显示在网站上。在编辑 JSON 文件时,我已经尝试了很多东西,包括正则表达式、替换等。我需要 JSON 文件中的"状态"根据 200 响应代码调整为向上或向下(status=up/down 现在只是一个占位符)。每次我能够将 JSON 文件附加到任何内容时,文本总是被添加到对象之外的页面底部。请务必注意,此 JSON 文件用于前端的方式是,如果状态为"up",则显示绿色块,如果状态为"down"则显示红色块。在我的原始 JSON 文件中总共还有 11 个服务器。
const config = require(__dirname + '/config/config.json');
var fs = require('fs');
...
function wrapper() {
//FOR EACH SERVER IN CONFIG FILE
for (var server of config.server) {
var url = server.ip + ':' + server.port;
var name = url + " " + server.name;
// DO REQUEST
loadUrl(url, name);
}
}
function loadUrl(url, name) {
var start = new Date().getTime();
request(url, function(error, response) {
var logName = name.split(' ');
var end = new Date().getTime();
var time = end - start;
if (!error) {
console.log(DateTime + " " + name + " " + response.statusCode + " - response time: " + time + "ms");
var total = DateTime + " " + name + " " + response.statusCode + " - response time: " + time + "ms'n";
fs.appendFile("./BY-logs/" + logDates + "_" + logName[1] + ".txt", total, encoding='utf8', function (err) { if (err) throw err; }); //creating or adding to logfile
//CHANGE JSON ACCORDING TO STATUS
if( response.statusCode != 200) {
fs.appendFile('./config/config.json', status = down, function (err) {});
} else {
fs.appendFile('./config/config.json', status = up, function (err) {});
}
}
}
)};
wrapper();
来自 JSON 文件的示例:
{
"port": 3000,
"server": [{
"id": 1,
"name": "abcdefghi2(node-1)",
"ip": "http://123.123.123.12",
"port": "8080",
"status": "up"
}, {
"id": 2,
"name": "abcdefg(node-2)",
"ip": "http://123.123.123.13",
"port": "8080",
"status": "up"
}]
}
您需要将 JSON 加载到程序中,更改object
的值,然后将其写入文件。
尝试以下操作:
var config = require('./config/config.json');
config.server.forEach((server, index, array) => {
if (server.id == "x")
server.status = "up"; // etc.
});
fs.writeFile('./config/config.js', config, (err) => { /* ... */ });
旁注:我建议将服务器存储为该对象中的对象,而不是对象数组。这样可以更轻松地获取所需的服务器对象。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 有人能用for循环和splice命令帮助编辑Javascript字符串吗
- 如何在编辑范围变量时(暂时)避免摘要循环
- 单击编辑按钮时,如何使用 jquery 从循环表的每一行传递 id
- 是否可以使用 for 循环编辑多个数组
- Javascript:在 for 循环中编辑图像高度
- Javascript编辑可自动循环图像
- JSON.stringify()导致无限循环(编辑:NO.坏逻辑是)
- 编辑php内部循环的特定记录
- 在节点 js 中通过循环编辑 JSON 文件