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

Javascript 使用res.render发送结果时会显示重复的行,javascript,node.js,express,pug,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

我一定在做一些很愚蠢的事情,但我找不到什么。我想列出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
router.get('/ListUsers',函数(req、res、next){
//需要检查人员的有效性
Account.find({'schema':'toto'},函数(err,user){
如果(错误){
console.log(err);//我们不应该有错误,这意味着db有pb
}否则{
var userList=“”;
user.forEach(函数(记录){
userList+=“”+record.nomuser+“”+record.firstlogin+“”+record.lastlogin+“”;
})     
console.log(userList);//它是完美的,如果放在翡翠中,显示得非常好
res.render('super_user_list',{results:userList});
}
});
});  // 最终列表用户
这种渲染让我感到困惑:

首先在中间有中间(这不表示我把控制台。日志结果直接在JADE)< /P>

>
我不明白它是从哪里来的。然后我的记录集就被复制了

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


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

因为您已经在使用模板引擎,所以不需要在您的路线中单独生成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

如果您需要任何澄清,请告诉我!

您在代码中生成HTML,同时还使用模板引擎,这似乎很奇怪。
user
,您在其上运行
forEach
是数组还是对象?@robertklep是的,我知道,但我做得很快-我想!我想了解一下发生了什么,以防我需要这样做一次。@DakshShah它会返回一个包含所有匹配mongoose文档的数组。是的,这是有效的。我希望能够发送HTML来根据值更改某些单元格的颜色。我希望这样做,而不必在客户端编写javascript文件。我仍然不明白为什么我会这样做这不起作用,因为Html是正确的。我突然想到(一定是一天中的炎热使我的大脑变得迟钝),当然我不能像这样传递Html,因为它进入了模板。如果我想改变细胞的颜色,我需要传递一些玉模板代码(?)所以它在模板中被重写了。也许我只是回去写客户端javascript,可能会更容易。
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