0

我在玩 Node.js、Express、Jade 和 MongoDB。我遇到了一个关于渲染的奇怪问题。我传递了从 db 查询返回的变量“users”,如下所示,我很确定它是正确的:

userProvider.findByIds(ids, function(error, users) {
  res.render('index', { users: users }); // This users here has all documents founded by Ids.
});

在 Jade 模板文件 index.jade 中有一个循环:

- each user in users //-This users here has only one document after I added a new user

每次添加新用户后它都不起作用。它只显示一个用户,即最新添加的用户。但是,如果我重新启动 Node.js,它会正常工作并显示每个用户都包含最新的用户。

我想这些东西存在一些缓存问题。对此有任何想法吗?

4

1 回答 1

0

我将假设这类似于您的代码的样子:

ul
  - each user in users
    li user.name    

问题在于行首的破折号 ( -) 包含each在其中。破折号将把该行的其余部分转换为无缓冲代码,但each不是代码。

呈现一个用户的原因可能与jade/pug 处理该行的方式有关,我敢打赌它将第一个用户带入内存但无法处理循环。

无论如何,这是循环遍历 users 数组的正确语法:

ul
  each user in users
    li user.name    
于 2018-10-08T04:29:49.000 回答