我最近开始使用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'中使用结果数组。
将非常感谢(简单)的例子。否则指向我可能会找到一些很好评论的例子的指针也很酷。
对不起,如果这是一个愚蠢的问题。用这些东西喵喵还是很早。
答案 0 :(得分:2)
根据您的代码,这将是最简单的解决方案。
这不是很好,有一个回调地狱,但它会起作用,假设finalResult
有一个可以被视图消耗的结构。
为了让事情变得更好,您可以使用async
。
或co
和their 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