javascript - NodeJS Express Route 在渲染的路由中返回异步数据

标签 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(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/

相关文章:

javascript - 字符串原型(prototype)在浏览器中有效,但在 Node 中无效

javascript - 我如何使用 json 而不是 jade 发送响应?

单击十字按钮不会删除列表项的 Javascript 待办事项列表

javascript - 有没有办法避免在这个 JavaScript block 中进行 eval ?

javascript - debounceTime 使表单控件运行两次

javascript - 在方法内的函数中引用 CoffeeScript 类中的 "this"的最佳方法是什么?

PHP/MySQL : populating a table by column

javascript - 如何获得具有固定总和和大小的随机数列表

php - 替代 "PDO::lastInsertId"/"mysql_insert_id"

mysql - 如果从带有空格的列中选择,Jpa 无结果