将从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,并使用它检索Tweet对象。有什么方法可以从T.get('statuses/show'...)
中提取“数据”并将其直接显示在PUG模板上吗?
发布于 2018-05-06 14:46:26
首先,您的代码不可能工作,因为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');
}
});
您应该检查:How do I return the response from an asynchronous call?
https://stackoverflow.com/questions/50200878
复制相似问题