将多个集合传递到同一条快速路线

时间:2018-11-24 18:03:35

标签: node.js mongodb express mongoose

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路由访问此其他集合中存储的信息。

我已经看到了一些其他答案,这些答案或多或少适合于我要尝试的操作,但是他们都对这样简单的事情感到过分杀伤。有什么建议么?谢谢!

1 个答案:

答案 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"

老实说,尽管我建议尽量不要引入条件逻辑。如果可能的话,只需设置另一个端点即可。