我试图通过将一些异步函数传递到渲染中来使我的一些渲染页面变得更智能,如下所示:
var functions = {
paginatedCategory: function(category) {
db.query(`SELECT * FROM content WHERE FIND_IN_SET(Category, "${category}") ORDER BY position`, function(error, results) {
console.log(results, 'results');
return results;
})
}
}
然后在我正在执行的 route :
res.render('category', functions);
在 category.pug
页面中,我在内部调用该函数,如下所示:
ul
each val in paginatedCategory('Products')
li=val
在控制台中,它输出该类别中的所有正确项目,但是渲染没有渲染任何内容,我猜这是因为 MySQL 数据库查询是异步的,因此它在拉取所有项目之前渲染页面,您会如何处理这样的情况?
此外,我希望能够直接从 .pug
文件传递参数,因为它会随着文件的不同而改变。
最佳答案
通常,处理此问题的方法是首先获取所有异步数据,将其放入数据结构中,一旦获得所有数据,然后调用 res.render()
并传递它是您收集的数据。
您可以在本文中看到这样的示例:Rendering a page after asynchronous operations .
关于javascript - NodeJS Express Route 在渲染的路由中返回异步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770725/