2017-10-08 3 views
0

여기에 힘든 시간을 보내고 있습니다. 저는 Node.js를 처음 사용하고 있으며 디렉토리에있는 파일에 저장된 RFID 태그 데이터 목록을 읽도록 약간의 RESTful API를 만들려고합니다.인라인 함수 내에서 변수 업데이트

경로가 설정되어있어 한 파일의 내용을 읽을 수 있습니다. 하지만 이제는 디렉토리에서 사용 가능한 파일 목록을 표시하고 해당 API 호출에 대한 링크를 만들어 공격대 태그 데이터를 읽으 려합니다.

내 문제는 비교적 단순한 html을 포함하는 responseContent 객체가 reader 콜백 함수의 파일 목록으로 업데이트되지 않는다는 것입니다. 콘솔에서 볼 수는 있지만 디렉터리가 올바르게 읽혀지고 모든 파일이 나열됩니다.

당신이 내 코드를 찾을 수 있습니다 아래 :

// get the listing of all stored rfid tags 
app.get("/rfid/tags", function(req, res) { 
    if (DEBUG) console.log("list all rfid tags requested"); 

    // create a shiny html response content to show in the browser: 
    var responseContent = "<html><h1>List of all RFID Tags</h1>RFID Tag Files:<ul>" 

    try { 
    fs.readdir(rfidTagDir, function(err, items) { 
     if (DEBUG) console.log(items); 

     for (i in items) { 
     var file = items[i].toString().substring(0,items[i].indexOf('.')); 
     responseContent += "<le>"+items[i]+"</le>"; 
     if (DEBUG) console.log(file); 
     } 
    }); 
    } catch (err) { 
    console.error("could not read directory "+rfidTagDir+" to list available tags \nException output: " + err.toString()); 
    } 
    responseContent += "</ul></html>"; 
    res.send(responseContent); 
}) 

으로 내가이가 콜백 정도되고 함께 할 수있는 뭔가가 이해 할수 있도록 Node.js를 상당히 새로운 해요 말했지만, 나는 단순히 수 이것에 대한 답을 찾지 못한다.

더 많은 도움이 필요하거나 도움이 될만한 내용이 있으면 크게 감사하겠습니다. 아래와 같이 시도 캐치에 내부

기독교

답변

0

이동 res.send(). leli으로 변경해야합니다.

// get the listing of all stored rfid tags 
app.get("/rfid/tags", function (req, res) { 
    if (DEBUG) console.log("list all rfid tags requested"); 

    // create a shiny html response content to show in the browser: 
    var responseContent = "<html><h1>List of all RFID Tags</h1>RFID Tag Files:<ul>" 

    try { 
     fs.readdir(rfidTagDir, function (err, items) { 
      if (DEBUG) console.log(items); 

      for (i in items) { 
       var file = items[i].toString().substring(0, items[i].indexOf('.')); 
       responseContent += "<li>" + items[i] + "</li>"; 
       if (DEBUG) console.log(file); 
      } 

      responseContent += "</ul></html>"; 
      res.send(responseContent); 

     }); 
    } catch (err) { 
     var msg = "could not read directory " + rfidTagDir + " to list available tags \nException output: " + err.toString(); 
     console.error(msg); 
     res.send(msg); 
    } 

});