一个页面怎么获取 MongoDB 多个集合的数据
发布于 11 年前 作者 xvzone 15594 次预览 最后一次回复是 11 年前 来自 问答
nodejs
数据库:mongoDB
问题:首页想展示的内容包括俩个集合的数据,怎么同时获取这两个集合的数据
现在用的方法是
var db = req.db;
var collection = db.collection('xxx');
collection.find({}).toArray(function(err,data){
res.render('index',{
'art_list' : data
});
})
要获取两个集合怎么做,比如要获取xxx和vvv集合改怎么处理,请大神们什么赐教,不胜感激
15 回复
可以直接将两个集合查出来传到View里啊
并发访问两个集合
这个一看就明白了,就是将两个套在一起,用内部去传值 非常感谢
这个要好好研究下,用书上的一个词形容:优雅 学习了,谢谢
@xvzone 这个如果你使用async去写,也很优雅~ —
@kenticny async这个不太懂,请大神略说一二
@xvzone 大神不敢当 我也是初学者 async就是个异步流程控制的类库,就是把好多嵌套回调函数写的美观点~ 内容很多的,我也只是略知一二~ 共同进步吧~async
优雅。学习了
最终是怎么写的呢?
如果选择async的话,你可以这样写: async.parallel({ a:function(cb){ mongo.getData(params_a,function(err,data){ cb(err,data);
})}, b:function(cb){ mongo.getData(params_b,function(err,data){ cb(err,data) })} },function(err,result){ console.dir(result);//{a:a_reuslt,b:b_result} }) 具体可以看async.js的文档
支持,很棒的原生方法,性能、可读性都很好。
用markdown语法啊。这代码看的难受
var db = req.db; var collection = db.collection(‘xxx’); collection.find({aaa}).toArray(function(err,data){ req.session.aaa=data; next(); }) function next (){ collection.find({bbb}).toArray(function(err,data){ req.session.bbb=data; renderview(); }) }
function renderview(){ res.render(‘index’,{ ‘aaa’:req.session.aaa, ‘bbb’:req.session.bbb }); }
req.session存值最优 对了。。这个基于EXPRESS。。。(忘了。。我写习惯了)
恩 你的这个看明白了 和一楼的方法实现方式一样,就是单独都写个function 给力 多谢了
这个也是我正需要的,谢谢!