2017-05-15 1 views
0

json 파일에서 하나의 값을 가져 오는 데 어려움을 겪고 있습니다. 내가 바꾼다해도 그건 효과가 없습니다. 누군가 나를 도우 려며 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?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

오류 :

하나의 솔루션으로, 아래 예 참조하는 "범위"외부 변수를 선언하고 변수는 글로벌하게하는 것입니다? 스코어 - 오름 변수에 실제로 액세스 할 수 있습니까? – Nezure

+0

@Nezure 나는 "score_comp이 정의되지 않았습니다"라는 오류 메시지가 나타납니다. 죄송합니다. 두 번째 질문을 이해하지 못합니다 ... –

+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); 
});