请教一个mongodb的问题
数据库的连接方式是blog例子中介绍的那样。 我在shell里面执行findOne都是木有问题的,但是在程序里面这么调用的话
userlist.forEach(function(username){
bcount +=1;
query['name'] = username;
console.log(query);
var puser = collection.findOne(query);
console.log(puser);
selecteduser.push(puser);
});
返回值都是undefined
[ 'zero2hero', 'jian' ]
{ name: 'zero2hero' }
undefined
{ name: 'jian' }
undefined
这种情况该如何处理。。。
3 回复
异步,你这里
var puser = collection.findOne(query);
这句话执行了之后,还没有查询返回呢,已经执行到了下一步
console.log(puser);
了。 所以是 未定义 。
collection.findOne(query, function(err, puser) {
console.log(puser);
})
楼上说得对,在回调里作处理即可
userlist.forEach(function(username){
bcount +=1;
query['name'] = username;
console.log(query);
collection.findOne(query,function(err,puser){
console.log(puser);
});
});
这样的话还是不行,不输出。我把上面的那个
bcount +=1;
移到findOne的回调函数里面发现这个callback等好久都没有执行。
这里问下如何从mongodb中查询满足条件(条件会变)的一些记录呢?