【发布时间】:2013-04-27 15:29:37
【问题描述】:
我正在使用 mongojs,我必须从取自 mongodb 的对象中检索一个字段。 我不明白如何返回该字段:
function retrieveVertById(id){
var result = [];
db.clusters.find({id: id}, function (err, clusters){
if( err || !clusters) console.log("No cluster found");
else clusters.forEach( function (cluster) {
vert = cluster["vertices"];
result.push(vert);
console.log(result);
});
})
return result;
};
var a = retrieveVertById("001");
console.log(a);
'forEach' 中的 print 打印出正确的值: (例如 [ [ [ 8, 2, 2 ], [ 2, 2, 5 ], [ 2, 2, 2 ], [ 5, 2, 2 ] ] ) 相反,循环外的打印显示一个空数组。 什么不适用于退货? 提前感谢您的帮助。
【问题讨论】:
-
console.log(vert) 可以吗?
-
是的,forEach 中的 console.log(vert) 也会打印正确的值。
-
您能否更好地解释您的问题?打印是指console.log吗?哪个console.log 没有显示正确的值,
a或return result, did you make your ownid` 还是您误认为_id? -
您不能从函数返回像
find这样的异步操作的结果。您必须使用回调,因为您的retrieveVertById函数在find回调发生之前返回。对现有问题进行一些搜索,因为这是一个非常常见的混淆点。 -
对于打印,我的意思是指令'console.log'。正确的值仅在 forEach 中显示。 'return' 似乎没有效果,因为指令 'console.log(a)' 显示一个空数组,而不是显示正确值的指令 'console.log(result)'。
标签: javascript function mongodb return mongojs