[英]For Loop not working inside Node.js while using mongoose
我正在嘗試通過mongoose從mongoDB獲取記錄
router.route('/testaa')
.get(function(req,res){
fisSite.find(function(err, retVal) {
var x = [];
for(var i =0;i<retVal.length;i++){
x.push(retVal[i].site);
}
res.json(x)
});
})
上面的代碼給出了未定義的值。
undefined
undefined
undefined
.....
請幫助在node.js內運行for循環,以便我可以使用從數組中提取數據。
當前,您正在執行的操作是獲取所有文檔字段,然后僅使用其中的一個。 您可以使用select方法優化查詢,該方法將僅檢索特定字段,而不檢索所有字段:
[注意:id字段是默認添加的,因此要在選擇中將其刪除,我們特別使用-_id來提及它。 如果要在響應文檔中保留ID,則可以刪除-_id。]
fisSite.find({}).select('site -_id').exec(function(err, docs)){
if(err){
return res.json({ status : false, message : 'Error Occured.'} );
}
else if(!docs){
return res.json({ status : false, message : 'No documents found.'} );
}
else{
return res.json({ status : success, message : 'Documents found.', data : docs} );
}
}
假設每個文檔中有10個字段,並找到100個結果文檔,您只需要這100個文檔中的site字段,但是不必要地調用其余的900個字段。
我在Mongoose中使用了Lean.exec。
router.route('/site')
.get(function(req,res){
fisSite.find().lean().exec(function(err, retVal) {
var x = [];
for(var i =0;i<retVal.length;i++){
x.push(retVal[i].site);
}
res.json(x)
})
});
嘗試添加一個空的搜索查詢以選擇所有文檔
嘗試改變
由此:
fisSite.find(function(err, retVal)
對此:
fisSite.find({}, function(err, retVal)
另外,嘗試執行console.log(retVal)
來檢查您的發現是否實際上返回了任何值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.