Визуализируйте данные в e js с помощью мангуста - PullRequest
0 голосов
/ 11 марта 2020

Я создаю приложение, в котором пользователи могут зарегистрироваться и войти в систему, эта часть обрабатывает данные, которые отправляет пользователь, хранящиеся в базе данных MonboDB с моделью Mon goose.

Теперь я пытаюсь отрисовать данные с помощью механизма шаблонов e js. Я исправил, что могу отображать все данные из базы данных

.get('/dashboard', auth, async (req, res) =>  {
    try {
        const users = await User.find({}).lean()
        res.render('pages/dashboard', {users})
    } catch (err) {
        console.log(err)
        res.status(500).send('er ging iets mis')
    }
})

Это пользователь . js в моих маршрутах

И это мой dashboard.e js

<%- include ('../partials/head') %>

<body>
<%- include ('../partials/header') %>
<% users.forEach((user, index) => { %>
    <p>Welkom <%= user.firstname %></p>
    <p>Leeftijd: <%= user.age %></p>
<% }) %>
<%- include ('../partials/nav') %>
</body>

Этот код отображает все из базы данных, поэтому, если у меня есть 2 пользователя в базе данных, тогда я получаю имя и возраст обоих пользователей. Теперь я хочу отображать данные только от пользователя, который вошел в систему. Как я могу это сделать?

Мой код также включен на Github

1 Ответ

1 голос
/ 12 марта 2020

То, что у вас сейчас есть:

.get('/dashboard', auth, async (req, res) =>  {
    try {
        const users = await User.find({}).lean()
        res.render('pages/dashboard', {users})
    } catch (err) {
        console.log(err)
        res.status(500).send('er ging iets mis')
    }
})

выполняет запрос, чтобы получить всех пользователей в базе данных, а затем передает результат в шаблон, поэтому на странице отображаются все ваши пользователи. Чтобы отобразить только данные пользователя, который вошел в систему, вы должны передать в шаблон только данные пользователя, который вошел в систему (не всех пользователей).

Я проверил промежуточное ПО auth из связанного репозитория и вижу, что оно проверяет авторизацию путем декодирования токена (выданного пользователю при входе в систему), сохраненного в запросе cook ie. Промежуточное программное обеспечение также заботится о том, чтобы найти (из БД) пользователя, связанного с маркером запроса, то есть зарегистрированного пользователя, оно сохраняет этого пользователя в объекте запроса как req.user. Следовательно, маршрут, который отображает данные одного пользователя, должен выглядеть примерно так:

.get('/userPage', auth, async (req, res) =>  {
    try {
        // The auth middleware already took care of fetching the 
        // data of the logged-in user
        const user = req.user;
        res.render('pages/userPage', {user})
    } catch (err) {
        console.log(err)
        res.status(500).send('er ging iets mis')
    }
})

Я использую шаблон pages/userPage в этом маршруте, потому что шаблон, который у вас есть для панели мониторинга, создан для Чтобы отобразить список пользователей, чтобы отобразить только одного пользователя, вам нужно изменить шаблон панели мониторинга или просто создать отдельный шаблон для этого. Шаблон может быть примерно таким:

<%- include ('../partials/head') %>

<body>
<%- include ('../partials/header') %>
<p>Welkom <%= user.firstname %></p>
<p>Leeftijd: <%= user.age %></p>
<%- include ('../partials/nav') %>
</body>

Надеюсь, это поможет.

...