簡體   English   中英

將路由參數傳遞給 Mongoose Query Express

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM