app.get('/dbpage', function(req, res){
Chapters.find({}, function(err, allChapters){
if(err){
console.log(err);
}else{
res.render('dbpage', {chapters: allChapters});
}
});
});
上面的代码只是我项目的一小部分,并且工作正常。 Chapters
是集合的名称,它是我的books
数据库的一部分。但是我试图通过同一路径/dbpage
传递另一个集合(来自同一数据库)。如何将其他集合添加到上面的代码中?因此,我可以通过/dbpage
路由访问此其他集合中存储的信息。
我已经看到了一些其他答案,这些答案或多或少适合于我要尝试的操作,但是他们都对这样简单的事情感到过分杀伤。有什么建议么?谢谢!
答案 0 :(得分:1)
您不能调用相同的路由名称。如果使用重复的路由定义,则“优先列出”优先。唯一允许使用相同路由定义的情况是,如果您使用其他HTTP动词...,例如POST,PUT,PATCH等。
因此,如果您确实要使用相同的路由,则需要传递查询参数,然后在该路由中推送条件逻辑,例如:
app.get('/dbpage', function(req, res){
let {someQueryParam} = req.query;
if(someQueryParam === 'someSpecialValue'){
//... do something different...
} else {
Chapters.find({}, function(err, allChapters){
if(err){
console.log(err);
}else{
res.render('dbpage', {chapters: allChapters});
}
}
});
});
而且,您将使用某些端点来调用它,例如:
yourDomain.com:3000/dbPage?someQueryParam="someSpecialValue"
老实说,尽管我建议尽量不要引入条件逻辑。如果可能的话,只需设置另一个端点即可。