2017-10-08 12 views
0

私はここで苦労しています。私はNode.jsをかなり使い慣れていて、ディレクトリ内のファイルに格納されているRFID Tagデータのリストを読み込むための少しのRESTful APIを作成しようとしています。インライン関数内から変数を更新する

私はルートをセットアップしており、1つのファイルの内容を正常に読み取ることができます。しかし今、ディレクトリから利用可能なファイルの一覧を表示し、対応するAPI呼び出しへのリンクを作成してraidタグデータを読みたいと思います。

私の問題は、かなり単純なhtmlを含むresponseContentオブジェクトが、リーダーコールバックの関数内のファイルのリストで更新されないということです。コンソールでは、ディレクトリが正しく読み込まれ、すべてのファイルがリストされていることがわかります。

は、あなたが私のコードを見ることができます:

// 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のためにかなり新しいよ、言ったが、私は単純にすることができますこれに対する答えを見つけることはできません。

助けや助けの方向を指すすべてのヘルプは、大いに感謝します。以下のようにtryキャッチに内部

クリスチャン

答えて

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

}); 
関連する問題