在一页上从两个Mongo查询中渲染结果

时间:2016-06-27 14:14:21

标签: javascript node.js mongodb express

我最近开始使用MongoDB和Node.js / Express,我仍然难以掌握一些概念。

请原谅新手问题。我找不到一个涵盖我正在努力学习的现有答案。

这很简单,我只想在单个页面上输出两个单独的mongo查询的结果。我不需要以任何方式分组或以其他方式加入数据,我只需要在一页上显示每个查询的结果。

所以,我可以查询并显示单个查询没有问题,但我倒下了第二个查询,因为我的示例代码在.js文件中执行查询并呈现页面并将结果作为数组传递(如果我理解正确的话那么

        var collection = db.collection('photographers');
        collection.find({}).toArray(function(err,result){
            if(err){
                console.log("Error retrieving records");
                res.send(err);
            }else if (result.length){
                console.log("Success");
                res.render('ptlist',{
                    "ptlist":result
                });
            }else{
                res.send('No Documents');
            }
            db.close();

呈现我的视图'ptlist'并将结果传递给数组ptlist。

我无法弄清楚如何对另一个集合执行另一个查询,并且还可以在视图'ptlist'中使用结果数组。

将非常感谢(简单)的例子。否则指向我可能会找到一些很好评论的例子的指针也很酷。

对不起,如果这是一个愚蠢的问题。用这些东西喵喵还是很早。

1 个答案:

答案 0 :(得分:2)

根据您的代码,这将是最简单的解决方案。

这不是很好,有一个回调地狱,但它会起作用,假设finalResult有一个可以被视图消耗的结构。

为了让事情变得更好,您可以使用async。 或cotheir sample code中的yield和MongoDB ES6 var collection = db.collection('photographers'); collection.find({}).toArray(function(err,result){ var finalResult = {}; if(err){ console.log("Error retrieving records"); res.send(err); } else if (result.length){ console.log("Success"); finalResult.plist = result; collection.find({/* another query */}).toArray(function(err,result){ finalResult.anotherKey = result; res.render('ptlist',{ "ptlist":finalResult }); }); }else{ res.send('No Documents'); } db.close(); });

menuViewController.delegate = self
menuViewController.sourceType = .PhotoLibrary