代码之家  ›  专栏  ›  技术社区  ›  Connor D

从GET方法中向PUG模板发送推特数据

  •  1
  • Connor D  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marcos Casagrande    6 年前

    首先,您的代码无法工作,因为 T.get 异步(&N); stweet 定义的范围 res.render('tweet', {stweet: stweet}); 没有访问权限。因此代码将抛出:

    Uncaught ReferenceError: stweet is not defined
    

    T 支持承诺,您应该使用它们,这样您的代码就会更干净。之后 T、 获取 只需将数据直接发送到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?