基本上,我试图找到一种方法来找到将req.params.name
插入find()
查询的方法。
我试过了:
尝试在我的req.params
对象参数find()
中传递我的Card.find({cardName: req.params.name}, callback)
变量以及其他任何可能的差异。
我尝试了findByName
的静态方法,其中我刚刚Card.findByName(req.params.name, callback);
当我console.lo(req.params.name)
时,它会返回卡片的名称;然而,当我得到show.ejs时,我会console.log(cardstatsok.cardName)
它返回未定义。
我已经在Stack Overflow上搜索过了,我已经检查了我的Udemy留言板,并且我已经尝试找到有关将路由参数传递给查询查询的任何教程,唉,没有。< / p>
这是我的代码:
我的架构和模型:
var cardSchema = new mongoose.Schema({
cardName: String,
id: Number,
cardSet: String,
image: String,
ability: String
});
var Card = mongoose.model("Card", cardSchema);
我的单卡页面路线:
app.get("/cards/:name", function(req, res) {
Card.find({"cardName":req.params.name}, function(err, cardInfo){
if(err){
res.redirect("/cards");
console.log(err);
} else {
res.render("show", {cardstatsok: cardInfo});
}
});
});
当我console.log(cardInfo)
时,它会返回很多对象,因为我使用了#34; Forest&#34;和Magic:The Gathering card Forest的副本已多次打印。不过这是一个:
{ _id: 5a85bb554c8fff0c04f15b8e,
cardName: 'Forest',
id: 243461,
cardSet: 'Duel Decks: Knights vs. Dragons',
image: 'http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=243461&type=card',
__v: 0 }
答案 0 :(得分:1)
find()
返回一个数组,表示cardstatsok
是一个数组。
所以console.log(cardstatsok.cardName)
无效。使用console.log(cardstatsok[0].cardName)
代替第一张卡,或console.log(cardstatsok)
代替所有内容。如果要打印所有卡名称,则必须在阵列上循环。
要查找只有一张卡,您可以使用findOne()
代替。