将从 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/