node.js - 从 GET 方法中将推文数据发送到 PUG 模板

标签 node.js express twitter

将从 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 获取 Tweet ID 并使用它来检索 Tweet 对象。有什么方法可以从 T.get('statuses/show'...) 中提取“数据”并将其直接显示在 PUG 模板上吗?

最佳答案

首先,您的代码无法工作,因为 T.get 是异步的,并且 stweet 是在 res.render('tweet', {stweet: stweet}); 没有访问权限的范围内定义的。所以该代码将抛出:

Uncaught ReferenceError: stweet is not defined

T 支持 Promise,你应该使用它们,这样你的代码会更干净。 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'); 
    }
});

您应该检查:How do I return the response from an asynchronous call?

关于node.js - 从 GET 方法中将推文数据发送到 PUG 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200878/

相关文章:

javascript - 使用 Ajax 调用在服务器上实时更新页面

javascript - 使用 Twitter 登录生成 token

javascript - 删除嵌入式 Twitter 小部件的悬停效果

node.js - 当我执行 heroku 推送时,为什么 Heroku 告诉我在我的模块中找不到 package.json

javascript - 将 Angular 4 应用程序静态 Assets 转发到/PORT 路径而不是主域

multithreading - 来自 NodeJS Native 扩展中不同线程的回调

mysql - 为什么mysql会抛出语法错误

java - 使用 twitter API 版本 1.1 检索 user_timeline 的最简单 Java 示例

javascript - 多个 http.get 请求的套接字挂起错误

linux - 在 Linux 上使用 nightwatch 运行 selenium 测试