使用res.render发送结果显示重复的行

时间:2017-06-17 14:30:53

标签: javascript node.js express pug

我必须做一些非常愚蠢的事情,但我找不到什么。我想非常简单地列出MongoDB集合中的文档。我正在使用nodejs,mongoose和Jade(我知道应该转移到Pug)并且我想保持一切简单,它是为了维护目的而能够查看数据。

这是我的玉文件:

extends layout

block content
  .uk-container(align="center")
    br
    table.uk-table(width="100%")
      thead
        tr
          th username
          th firstlogin
          th lastlogin
      tbody
        #{results}

这是我的路线:

 router.get('/ListUsers',function(req, res, next) {
 // need to check the validity of the person   
    Account.find({'schema':'toto'}, function(err, user) {
    if (err) {
      console.log(err); // we should not have an error, it means db has pb
    } else {
      var userList ="";
      user.forEach(function(record){
        userList+="<tr><td>"+record.nomuser+"</td><td>"+record.firstlogin+"</td><td>"+record.lastlogin+"</td></tr>";
      })     
      console.log(userList); // it is perfect and if put in the jade shows perfectly well 
      res.render('super_user_list',{results:userList});
    }
  });
});  // end ListUsers

渲染令我感到困惑:

首先在顶部我在中间(如果我将console.log结果直接放在Jade中则不显示)

 <>>

我不明白它来自哪里。然后我的记录集重复了。

我做错了什么?我想要一个没有额外的javascript等的简单页面,我发现自己有一个我无法解决的谜! :(

感谢您的任何想法,建议解释!

1 个答案:

答案 0 :(得分:0)

由于您已经在使用模板引擎,因此无需在路线中单独生成HTML。这就是使用模板引擎的重点。这是应该实现你想要实现的目标。

您的新路线应如下所示:

router.get('/ListUsers',function(req, res, next) {
    Account.find({'schema':'toto'}, function(err, user) {
      if (err) {
        console.log(err);
      } else {
          // pass matched documents to template 
          res.render('super_user_list', { results: user });
      }
    });
});

模板文件现在可以处理您的结果:

extends layout

block content
  .uk-container(align="center")
    br
    table.uk-table(width="100%")
      thead
        tr
          th username
          th firstlogin
          th lastlogin
      tbody
      each record in results
        td= record.nomuser
        td= record.firstlogin
        td= record.lastlogin

如果您知道是否需要任何澄清,请告诉我们。