2012-10-25 44 views
0

我只是不知道爲什麼它不工作((val.instruments是undefinded節點+ MongoDB的:找到集合

function getInstruments(callback) { 
    db.collection("settings", function(error, settings) { 
     settings.find({ "settings" : "settings" }, function (err, val) { 
      console.log('from getInstruments ' + val.instruments); 
      if (val.instruments==undefined) { 
       callback(""); 
      } else { 
       callback(val.instruments); 
      } 
     }); 
    }); 
} 

方案:

{ 
    "_id": { 
     "$oid": "508677a3e5089a6df291631a" 
    }, 
    "settings": "settings", 
    "instruments": [ 
     "1", 
     "2", 
     "3" 
    ] 
} 

回報:

node app.js: 
from getInstruments undefined 

有何建議?謝謝。

UPD:修改代碼:

function getInstruments(callback) { 
db.collection("settings", function(error, settings) { 
    settings.find({ "settings" : "settings" }).toArray(function(err, docs) { 
     console.dir(docs.instruments); 
    }); 
}); 
} 

結果:

[ { _id: 508677a3e5089a6df291631a, 
settings: 'settings', 
instruments: [ '1', '2', '3' ] } ] 

更改爲:

function getInstruments(callback) { 
    db.collection("settings", function(error, settings) { 
     settings.find({ "settings" : "settings" }).toArray(function(err, docs) { 
      console.dir(docs.instruments); 
     }); 
    }); 
} 

結果:

undefined 

如何可以嗎?

回答

0

find正在返回一個數組。因此,您應該檢查val.length是否大於0,然後查看val [0]。儀器

+0

問題是find找不到任何東西。它只是找不到我的對象 – f1nn

+0

我沒有在你的筆記中看到val未定義。我只是看到val.instruments是未定義的。你是否嘗試輸出val? – Pat

+0

是的,它返回一個對象並以純文本格式記錄它。實際上,它似乎可以找到一個對象,但是我不能在輸出中獲得[「1」,「2」,「3」]。 – f1nn

0

查看文檔find section最後的示例。如果您在find的回調中運行val.toArray(),則應該能夠循環返回的文檔並逐個處理它們。

+0

我已更新我的帖子,請看看。 – f1nn