2017-05-15 7 views
0

jsonファイルから1つの値を取得しようとしています。私が何を変えても、それは動かない。誰かが私を助けて、私が間違っていることを教えてもらえますか?Express JSでJSONファイルを読む

{"complexes":[{"Réponse 1":"a."}, 
      {"Réponse 2":"a."}, 
      {"Réponse 3":"c."}], 
"scorecomplexes":2} 

おかげで、すでにあなたの助けのために:ここに私のコードは

app.get('/results', function(req, res){ 
filePath = '/home/smath/'+req.query.id+'comp.json'; 
fs.readFile(filePath, function (err, data) { 
    if (err) { 
      throw err; 
    } 
     var jsondata = JSON.parse(data); 
     var score_comp = jsondata.scorecomplexes; 
    }); 

console.log(score_comp); 
var jsonResponse = []; 
jsonResponse.push({"text": "Complexes: "+score_comp+"/10"}); 
res.send(jsonResponse); 
}); 

JSONファイル私はこのようなルックスを読みしようとしているのです!

+0

どれエラー:

一つの解決策は、以下の例を参照してくださいその「範囲」外で変数を宣言した変数はグローバルにするのですか?スコープの外側にあるscore-comp変数に本当にアクセスできますか? – Nezure

+0

@Nezure私はエラーが発生します: "score_compは定義されていません"と申し訳ありませんが、私はあなたの2番目の質問を理解していません... –

+0

私はなぜ "score_compが定義されていない" 参考までにhttps://www.w3schools.com/js/js_scope.aspをご覧ください。 – Nezure

答えて

2

変数 "jsondata"と "score_comp"は、app.get ..に渡された関数に対してローカルで宣言されています。したがって、それらのスコープの外部ではアクセスできません。

//global variables 
var jsondata; 
var score_comp; 

app.get('/results', function(req, res){ 
filePath = '/home/smath/'+req.query.id+'comp.json'; 
fs.readFile(filePath, function (err, data) { 
    if (err) { 
      throw err; 
    } 
     jsondata = JSON.parse(data); 
     score_comp = jsondata.scorecomplexes; 
    }); 

console.log(score_comp); 
var jsonResponse = []; 
jsonResponse.push({"text": "Complexes: "+score_comp+"/10"}); 
res.send(jsonResponse); 
});