我正在尝试从mongoDB通过mongoose
获取记录 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循环,以便我可以使用数组中的提取数据。
答案 0 :(得分:0)
目前您正在做的是获取所有文档字段,然后只使用其中的一个。您可以使用select方法优化查询,该方法仅检索特定字段而不是所有字段:
[注意:默认情况下会添加id字段,因此要在select中删除它,我们使用-_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个文档中的站点字段,但不必要的是您要调用剩余的900个字段。
答案 1 :(得分:-1)
尝试添加空搜索查询以选择所有文档
尝试更改
来自:
fisSite.find(function(err, retVal)
对此:
fisSite.find({}, function(err, retVal)
还尝试执行console.log(retVal)
检查您的查找是否实际返回任何值。