请教一个mongodb的问题
发布于 11 年前 作者 lastsaga 3528 次浏览 最后一次编辑是 8 年前

数据库的连接方式是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中查询满足条件(条件会变)的一些记录呢?

回到顶部