Node.js 是否有任何方法可以从URL收集数据并在数据库中查找该数据并将其呈现在ejs文件中?
我不熟悉nodejs和express。那么,有没有办法从URL获取数据并在数据库中查找这些数据,然后将整个集合呈现在一个ejs文件中呢 Like(/分类/:动物) 选择变量(动物)并在数据库中搜索它,并在不使用if-else语句的情况下传递匹配动物的整个集合 请推荐我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)
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文件中写入什么是什么意思?