Как использовать выборку внутри запроса GET и отобразить этот результат?

#javascript #node.js #express #fetch #router

#javascript #node.js #выразить #выборка #маршрутизатор

Вопрос:

Я использую экспресс-маршрутизатор в узле и пытаюсь отобразить страницу с некоторыми данными, которые я получаю при извлечении из API. Однако я не получаю абсолютно никаких результатов, и это не ошибка API. Я проверил консоль вручную, и она возвращает результаты, как и ожидалось.

Вот мой код:

 router.get('/dashboard', ensureAuth, async (req, res) => {
    try {
        const resp = await fetch("https://api.tvmaze.com/shows?page=1")
        const respData = await resp.json()

        res.render('dashboard', {
            name: req.user.firstName,
            image: req.user.image,
            shows: respData
        })
    } catch (error) {
        res.render('dashboard', {
            name: req.user.firstName,
            image: req.user.image
        })
    }

}) 
 

РЕДАКТИРОВАТЬ: вот представление, которое отображается:

 <body>
        {{#if shows}}
        {{#each shows}}
        <img src="{{image.original}}" alt="{{name}}" />
        <div class="movie-info">
            <h3>{{name}}</h3>
            <span>{{weight}}</span>
        </div>
        {{/each}}
        {{else}}
        <p>No shows available.</p>
        {{/if}}
</body>
 

Я искал в Интернете, но не могу найти объяснение, в чем здесь проблема. Если это дубликат, пожалуйста, перенаправьте меня на оригинал. Спасибо.

Комментарии:

1. Пожалуйста, предоставьте больше информации о вашей ошибке или представлении, в котором вы не можете увидеть возвращенные данные.

2. Что вы видите, когда запускаете сервер в своем отладчике и устанавливаете точку останова const respData = await resp.json() ?

3. Я добавил редактирование @silencedogood. Я не получаю никаких ошибок, он просто показывает абзац «Недоступно».

4. No shows available вероятно, это означает, что было создано исключение и ответ был отправлен из catch блока. Пожалуйста, войдите error или прочитайте это в своем отладчике. Вы можете установить точку останова в первой строке catch блока.

5. Невероятно глупая ошибка от меня. fetch API не реализован в node. Извините, что потратил ваше время, но спасибо за вашу помощь. Регистрация ошибки дала мне всю необходимую информацию. @jabaa

Ответ №1:

Вы не можете использовать fetch внутренний узел, потому что он доступен только в браузере. Если вы хотите сделать HTTP-запрос из приложения узла, используйте axios или node-fetch