Javascript 如何在Node.js和Express上的同一个.ejs文件上呈现MySQL查询的多个结果?

Javascript 如何在Node.js和Express上的同一个.ejs文件上呈现MySQL查询的多个结果?,javascript,html,node.js,express,ejs,Javascript,Html,Node.js,Express,Ejs,我现在正在学习Node.js并创建一个web应用程序,但不知道如何在同一个.ejs文件上渲染两次 因此,在以下.ejs文件中: <table> <% rows.forEach(function(ind){ %> /* map each value of each field to table */ <% }) %> </table> <table> <% rows2.forEach(function(ind){ %> /*

我现在正在学习Node.js并创建一个web应用程序,但不知道如何在同一个
.ejs
文件上渲染两次

因此,在以下
.ejs
文件中:

<table>
<% rows.forEach(function(ind){ %>
/* map each value of each field to table */
<% }) %>
</table>

<table>
<% rows2.forEach(function(ind){ %>
/* map each value of each field to table */
<% }) %>
</table>

/*将每个字段的每个值映射到表*/
/*将每个字段的每个值映射到表*/
我想执行两个单独的查询并将它们呈现到同一个
.ejs
文件中,但当我尝试执行时,我无法执行,因为当我尝试运行第一个查询并将其呈现到上面的
文件中。ejs
文件时,我没有第二个查询的结果,该结果会为第二个表(即
行2
数据)吐出值。我该怎么处理呢?或者我必须创建两个独立的
.ejs
文件,并以嵌套形式渲染两次?我喜欢尽可能避免嵌套文件,所以如果有任何解决方案,请告诉我


谢谢。

只需等待两个查询完成,然后再呈现结果:)

概念上:

db.query(QUERY1, function(err, result1) {
  db.query(QUERY2, function(err, result2) {
    res.render('template', { rows : result1, rows2: result2 });
  });
});
不必像那样嵌套函数,您可以看一下,这将使上面的代码如下所示:

async.parallel([
  function(callback) { db.query(QUERY1, callback) },
  function(callback) { db.query(QUERY2, callback) }
], function(err, results) {
  res.render('template', { rows : results[0], rows2 : results[1] });
});

使用
async.parallel
的优点是两个查询将彼此并行运行,而不是像第一个示例中那样按顺序运行。因此,响应会(可能)更快。

我现在正在阅读一篇关于
async.parallel
的文档,但听起来非常适合。谢谢。我没有深入阅读文档,但是当我尝试时,参数变量
results
返回了列表列表,列表由行和字段组成。所以我将
rows:result[0]
更改为
rows:result[0][0]
,得到了我所期望的结果。@user2360798啊,没错,我忘记了
node mysql
用两个参数而不是一个参数调用回调:)