我现在有两个表 一个question { “name” : “test”, “faq” : “faq”, "_id" : ObjectId(“521dac0e5a5be3f81e000002”), }
一个info { “name” : “test”, “imgUrl” : “./public/images/11.jpg”, "_id" : ObjectId(“521dac2b5a5be3f81e000004”) }
我的需求是,查询question中的name,然后还有知道name的头像地址,所以要二次查询info中imgUrl
mongodb.open(function(err, db){
if(err){
  return callback(err);
}
//读取 users 集合
db.collection('question', function(err, collection){
  if(err){
    mongodb.close();
    return callback(err);
  }
  //查找用户名 name 值为 name文档
  collection.find({hide:{$ne:false}}).limit(5).sort({time:-1}).toArray(function(err,items){
    if(err) throw err;
    //二次查询
    db.collection('info', function(err, collection){
        for(var i=0,l=items.length;i<l;i++){
          collection.find({name:items[i].name}).toArray(function(err,itens){  
            var l;
          });
        }
    });
    mongodb.close();
    //遍历数据
    return callback(items);
  });
});
});
这里在查询到collection.find({name:items[i].name}).toArray(function(err,itens){var l;}); 时,这里查询失败,断点始终进入不了var l;上
我用第二种方法有尝试,就是
mongodb.open(function(err, db){
if(err){
  return callback(err);
}
//读取 users 集合
db.collection('question', function(err, collection){
  if(err){
    mongodb.close();
    return callback(err);
  }
  //查找用户名 name 值为 name文档
  collection.find({hide:{$ne:false}}).limit(5).sort({time:-1}).toArray(function(err,items){
    if(err) throw err;
    mongodb.close();
    //遍历数据
    return callback(items);
  });
});
});
这个查询完后,我先把items中的name放到一个数组,然后 再次打开mongodb.open 遍历查找
这样两种查询都无法二次查到info 表里面的内容,每次都是collection.find() 这里出错
求大神帮助
自己解决了 异步的坑 db.collection(‘info’, function(err, collection){
    for(var i=0,l=items.length;i<l;i++){
      collection.find({name:items[i].name}).toArray(function(err,itens){ 
        var l;
      });
    }
});
mongodb.close();  
这个 mongodb.close();在链接info时就执行了,当具体循环时,mongodb已经关闭,所以无法查询
另外一个坑:
for(var i=0,l=items.length;i<l;i++){
collection.find({name:items[i].name}).toArray(function(err,itens){
        var l;
});
}
这个循环异步发出,var l;断点这个是谁先查到数据,谁先返回。
表设计不够好,将这两个信息放在一起 会有什么问题么
恩~第一次用mongodb,都是摸索着用,
这两个表一个是用户提问题,记录问题的表, 一个是用户注册存放用户信息的表