Javascript 如何在Node.js和Express上的同一个.ejs文件上呈现MySQL查询的多个结果?
我现在正在学习Node.js并创建一个web应用程序,但不知道如何在同一个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){ %> /*
.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
用两个参数而不是一个参数调用回调:)