Javascript NodeJS Express路由在呈现的路由中返回异步数据
我试图通过将一些异步函数传递到渲染中,使一些渲染页面更智能,如下所示:Javascript NodeJS Express路由在呈现的路由中返回异步数据,javascript,mysql,node.js,asynchronous,pug,Javascript,Mysql,Node.js,Asynchronous,Pug,我试图通过将一些异步函数传递到渲染中,使一些渲染页面更智能,如下所示: var functions = { paginatedCategory: function(category) { db.query(`SELECT * FROM content WHERE FIND_IN_SET(Category, "${category}") ORDER BY position`, function(error, results) { console.log(resu
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;
})
}
}
ul
each val in paginatedCategory('Products')
li=val
然后在路线上我会这样做:
res.render('category', functions);
在category.pug页面中,我调用了里面的函数,如下所示:
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;
})
}
}
ul
each val in paginatedCategory('Products')
li=val
在控制台中,它会输出该类别中所有正确的项,但是呈现不会呈现任何内容,我猜这是因为MySQL数据库查询是异步的,所以它会在提取所有项之前呈现页面,您会如何处理这种情况
另外,我希望能够直接从.pug文件传递参数,因为它会随着文件的变化而变化。通常,处理方法是首先获取所有异步数据,将其放入数据结构中,一旦获得所有数据,然后调用res.render并将收集的数据传递给它
你可以在本文中看到这样一个例子:。如果大量数据导致负载成为问题,你知道另一种方法吗?@Walter-我建议你问自己的问题,并提供更多具体细节,也许我们可以提供帮助。