Bla*_*ard 3 html javascript ejs node.js express
我现在正在学习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>
Run Code Online (Sandbox Code Playgroud)
我想执行两个单独的查询并将它们渲染到同一个.ejs
文件,但是当我尝试时,我不能从那时起我尝试运行第一个查询并将其渲染到上面的.ejs
文件时我没有第二个查询的结果,它吐出第二个表的值(即row2
数据).我怎么处理它?或者我必须制作两个单独的.ejs
文件并以嵌套形式渲染两次?我想尽可能避免使用嵌套文件,所以如果有任何解决方案请告诉我......
谢谢.
只需等到两个查询完成后再渲染结果:)
概念:
db.query(QUERY1, function(err, result1) {
db.query(QUERY2, function(err, result2) {
res.render('template', { rows : result1, rows2: result2 });
});
});
Run Code Online (Sandbox Code Playgroud)
你可以看看async.parallel,而不是嵌套这样的函数,这将使上面的代码看起来像这样:
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] });
});
Run Code Online (Sandbox Code Playgroud)
使用的优点async.parallel
是两个查询将彼此并行运行,而不是像第一个示例中那样顺序运行.所以响应会(可能)更快.
归档时间: |
|
查看次数: |
4303 次 |
最近记录: |