2016-07-11 5 views
0

私はサーバーが稼働中または停止中の場合にウェブサイトに表示するモニターを作っています。 JSONファイルの編集については、正規表現や置換など、数多くのことを試しました。 200のresponseCodeに基づいて上下に調整するためにJSONファイルの「ステータス」が必要です(ステータス= up/downは現在のプレースホルダです)。とにかくJSONファイルを追加できるたびに、テキストは常にオブジェクトの外側のページの下部に追加されます。このJSONファイルは、ステータスが 'up'の場合は緑色のブロックを表示し、 'down'の場合は赤色を表示する方法でフロントエンドに使用されていることに注意してください。オリジナルのJSONファイルには、合計で11個のサーバーがあります。JSONファイルをノードjsのループで編集します

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ファイルのサンプル:あなたは、ファイルに書き込み、objectの値を変更し、プログラムに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" 
}] 
} 
+0

'JSON.parse'を試してください –

+1

基本的に実際のデータベースを使用していて、実際のデータベースを使用していないファイルとして保存するのはなぜですか? – charlietfl

答えて

0

これらの線に沿って何かを試してみてください:

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) => { /* ... */ }); 

サイドノート:私は、そのオブジェクトではなく、オブジェクトの配列内のオブジェクトとしてサーバーを格納recommenedう。これにより、必要なサーバーオブジェクトを簡単に取得できます。

関連する問題