Как передать несколько сложных запросов в mon goose, используя express, где схемы встроены, чтобы отобразить мой файл e js - PullRequest
0 голосов
/ 17 июня 2020
//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, мне нужно что-то, что поможет мне получить оба идентификатора и в конечном итоге получить: playerId

, который я хочу чтобы передать мой файл playerDetails.

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

код, который у меня есть в моем файле e js, приведен выше, что является жестко запрограммированным значением для получения имени игрока.

Но я просто не знаю, как передать специфицированный c: playerId из моего контроллера getPlayer, где мне не придется жестко кодировать значение, чтобы указать имя игрока в моем e js файл.

Что мне делать? Спасибо.

1 Ответ

0 голосов
/ 17 июня 2020

Моя функция контроллера:

//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
        })
    });
};

Мой e js шаблон:

<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. Я пропустил это, чтобы проверить точный идентификатор, который будет соответствовать одному игроку.

Главное, что у меня не получалось, - это преобразование объектов в строку. Поскольку объекты имеют разные адреса памяти, они никогда не будут равны друг другу, поэтому ничего не отображается на странице. Вот почему я использую JSON.stringify() для преобразования ._id в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...