Отправка данных Tweet в шаблон PUG из метода GET - PullRequest
0 голосов
/ 06 мая 2018

Какой самый эффективный способ отправки данных, извлеченных из функции GET, в шаблон PUG? Я помещал данные в массив, а затем отправлял их в шаблон, но это кажется неэффективным.

app.get('/tweet/:id', function(req, res) {
    const id = req.params.id;
    T.get('statuses/show/' + id, function(err, data, response) {
        let stweet = [];
        stweet.push(data.text);
    });
    res.render('tweet', {stweet: stweet});
});

Получает идентификатор твита из URL и использует его для получения объекта твита. Есть ли какой-нибудь способ, которым я могу извлечь "данные" из T.get('statuses/show'...) и отобразить их непосредственно в шаблоне PUG?

1 Ответ

0 голосов
/ 06 мая 2018

Прежде всего, ваш код не может работать, поскольку T.get является асинхронным и stweet определено в области, к которой у res.render('tweet', {stweet: stweet}); нет доступа. Так что код будет выдавать:

Uncaught ReferenceError: stweet is not defined

T поддерживает обещания, вы должны их использовать, чтобы ваш код был намного чище. После выполнения T.get просто отправьте данные непосредственно в шаблон PUG, использовать не нужно: .push

app.get('/tweet/:id', async(req, res) => {

    try {
        // We wait until `T.get` is done
        const { data } = await T.get(`statuses/show/${req.params.id}`, { /** params **/ });    
        res.render('tweet', { stweet: [data.text] });

    } catch(e) {
        // Or whatever error message you want to display
        res.render('error'); 
    }
});

Вы должны проверить: Как вернуть ответ от асинхронного вызова?

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