如何在express中以表达方式在猫鼬中传递多个复杂查询,以将其呈现给我的ejs文件

问题描述 投票:0回答:1
//GET /teams/:id/players/:playerId     --> single team --> getting single player
module.exports.getPlayer = (req, res, next) => {
    TeamModel.findOne({ _id: req.params.id }, (err, result) => {
        console.log('Result: ' + result.players);
        // let player = _.where(result.players, { id: req.params.playerId })
        res.render('playerDetails', {
            title: 'Player Details',
            playerDetails: result
        })
    })
};

因为req.params.id会在/ player /:playerId之前为我生成ID我想要可以帮助我获取ID并最终得到:playerId

的东西

我想传递我的'playerDetails'文件。

<td>
<%=playerDetails.players[1].playerName%>
</td>

我在我的ejs文件中的代码在上面,这是一个硬编码的值,用于产生玩家名称。

但是我只是不知道如何从我的getPlayer控制器传递特定的:playerId,在这里我不必对值进行硬编码以在我的ejs文件中列出播放器名称。

我该怎么办?谢谢。

express mongoose controller schema ejs
1个回答
0
投票

我的控制器功能:

//GET /teams/:id/players/:playerId     --> single team --> getting single player
module.exports.getPlayer = (req, res, next) => {
    TeamModel.findOne({ _id: req.params.id }, (err, result) => {
        res.render('playerDetails', {
            title: 'Player Detail',
            playerDetails: result,
            playerId: req.params.playerId
        })
    });
};

我的ejs模板:

<tbody>
        <!-- since both the _id are objects their memory address are unique, I had to convert it to string to compare-->
        <% for(let i= 0; i < playerDetails.players.length; i++) {%>
        <%if(JSON.stringify(playerDetails.players[i]._id) === JSON.stringify(playerId)){%>
        <tr>
            <td><%=playerDetails.players[i].playerName%></td>
            <td><%=playerDetails.players[i].age%></td>
            <td><%=playerDetails.players[i].jerseyNum%></td>
        </tr>
        <% } %>
        <% } %>
    </tbody>

所以我做了什么,就是在playerId控制器函数中传入了一个单独的键getPlayer,该键将在playerDetails.ejs中接收。我通过了这个检查,以便可以检查与单个玩家匹配的确切ID。

我做得不好的主要事情是将对象转换为字符串。由于对象具有不同的内存地址,因此它永远不会彼此相等,因此,不会在页面上显示任何内容。这就是为什么我使用JSON.stringify()._id转换为字符串。

© www.soinside.com 2019 - 2024. All rights reserved.