[英]Passing Route Parameter to Mongoose Query Express
基本上我試圖找到一種方法來找到一種方法將req.params.name
插入到find()
查詢中。
我試過了:
試圖在我的find()
對象參數Card.find({cardName: req.params.name}, callback)
傳遞我的req.params
變量以及任何其他可能的變化。
我已經嘗試了findByName
的靜態方法,其中我剛剛做了Card.findByName(req.params.name, callback);
當我執行console.lo(req.params.name)
它返回卡片的名稱; 但是,當我使用 show.ejs 執行console.log(cardstatsok.cardName)
它返回未定義。
我已經在 Stack Overflow 上搜索過,我檢查過我的 Udemy 留言板,我已經嘗試找到任何關於將路由參數傳遞給查找查詢的教程,唉,什么都沒有。
這是我的代碼:
我的架構和模型:
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)
它會返回許多對象,因為我使用了“Forest”,並且 Magic: The Gathering 卡 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 }
find()
返回一個數組,這意味着cardstatsok
是一個數組。
所以console.log(cardstatsok.cardName)
將不起作用。 使用console.log(cardstatsok[0].cardName)
代替第一張卡片或使用console.log(cardstatsok)
代替所有內容。 如果要打印所有卡片名稱,則必須遍歷數組。
要僅查找一張卡片,您可以改用findOne()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.