2017-10-08 116 views
0

我在這裏很難過。我對Node.js相當陌生,並且正在嘗試創建一個小RESTful API來讀取存儲在目錄中文件中的RFID標籤數據列表。從內聯函數內更新變量

我有路線設置,我可以成功讀取一個文件的內容。但現在,我想顯示目錄中可用文件的列表,並創建指向相應API調用的鏈接以讀取raid標籤數據。

我的問題是,應包含相當簡單的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()內的嘗試捕捉如下。 le應改爲li

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

});