2015-10-14 97 views
0

我使用Node.js構建服務器並使用MongoDB數據庫。我不知道如何從數據庫返回的結果中獲取屬性值。格式是JSON和代碼是:Node.js + Mongodb如何從Json格式獲取屬性值?

exports.queryExams = function(db, data, callback) { 
     var exams = db.collection("exams"); 
     var stream = exams.find(data).stream(); 
     stream.on("data", function(item) { 
      callback(item); 
     }); 

    app.post("/showExam", urlencodedParser, function(req, res) { 

      var examName = req.body.examName; 

      console.log(examName); 

      var data = {examName:examName}; 

      MongoClient.connect(url, function(err, db) { 
       assert.equal(null, err); 
       console.log("Connected correctly to server"); 
       examDao.queryExams(db, data, function(result) { 
        console.log(result); 
        db.close(); 
       }); 
      }); 
     }); 

示例數據

{ _id: 561cc05ba9659d040569ffdf, 
    examName: 'Test1', 
    userName: 'Jack', 
    examId: 3, 
    array: 
    [ { examsId: 1, databaseId: 146 }, 
    { examsId: 2, databaseId: 1168 }, 
    { examsId: 3, databaseId: 1169 }, 
    { examsId: 4, databaseId: 147 }, 
    { examsId: 5, databaseId: 145 } ] } 

我怎樣才能得到屬性值?

回答

0

你說什麼屬性?

如果你只是想訪問結果對象的屬性之一,您可以在一個點式的語法訪問它們:

console.log(result.examName); 

或者訪問字典的語法屬性

console.log(result["examName"]); 

陣列可以循環:

for(var i in result["array"]) { 
    console.log(result["array"][i]["examsId"]; 
} 

作爲一個旁註:我會嘗試在每次處理請求時不打開MongoDB連接,而是嘗試打開一次MongoDB連接並回收/重用它。最好的情況是使用MongoDB的NodeJS連接器的連接池功能。