Node.js 是否有任何方法可以从URL收集数据并在数据库中查找该数据并将其呈现在ejs文件中?

Node.js 是否有任何方法可以从URL收集数据并在数据库中查找该数据并将其呈现在ejs文件中?,node.js,mongodb,express,mongoose,ejs,Node.js,Mongodb,Express,Mongoose,Ejs,我不熟悉nodejs和express。那么,有没有办法从URL获取数据并在数据库中查找这些数据,然后将整个集合呈现在一个ejs文件中呢 Like(/分类/:动物) 选择变量(动物)并在数据库中搜索它,并在不使用if-else语句的情况下传递匹配动物的整个集合 请推荐我 app.get("/category/:animal", function(req,res){ var animalCopy = req.params.animal; console.log(animalCopy)

我不熟悉nodejs和express。那么,有没有办法从URL获取数据并在数据库中查找这些数据,然后将整个集合呈现在一个ejs文件中呢

Like(/分类/:动物)

选择变量(动物)并在数据库中搜索它,并在不使用if-else语句的情况下传递匹配动物的整个集合

请推荐我

app.get("/category/:animal", function(req,res){
    var animalCopy = req.params.animal;
    console.log(animalCopy);
    if(animalCopy == "dog")//Dog category
    {
     Product.findOne({header : "Dog"},function(err,products)
        {
          if(err)
            {
            console.log(err);
            }else
            {
         res.render("product",{products : products});   
            }
        });
    }
    else if(animalCopy == "cat")//Cat category
    {
     Product.findOne({header : "Cat"},function(err,products)
        {
          if(err)
            {
            console.log(err);
            }else
            {
         res.render("product",{products : products});   
            }
        });
    });
动物种类很多。那么对于每一个类别,我是否必须写出连续的if-else语句?
请建议

您可以在查询中使用动物参数,但是,如果您的查询条件始终是url参数的大写版本,那么您只需要大写第一个字母:

app.get("/category/:animal", function(req, res) {
  const animal = req.params.animal;

  const animalCapitalised = animal.charAt(0).toUpperCase() + animal.slice(1);

  Product.findOne({ header: animalCapitalised }, function(err, products) {
    if(err) {
      console.log(err);
    } else {
      res.render("product", { products : products });   
    }
  });
});

我希望这能有所帮助。

你为什么不只是发送
/category/Dog
而不是
/category/Dog
?因为这应该有一个相当明显的结论。你应该做的就是把字符串的第一个字母改成大写
findOne({header:req.param.amimal})
在整理发出正确的“case”时工作正常。正确。事实上,我还没有看到任何人在他们的URL中使用大写字母。非常感谢。它工作得非常好。你能给我推荐点别的吗?假设我有一条路线(/products/:category/:items)。那么,在ejs文件中写入什么,使其指向此路径?@Eddy_\u Be您在ejs文件中写入什么是什么意思?