我正在玩Node.js,Express,Jade和MongoDB。我遇到了一个关于渲染的奇怪问题。我传递了变量“users”,它从db查询返回,如下所示,我很确定它是正确的:
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,它的工作正确并显示每个用户都包含最新的。
我猜这些东西存在一些缓存问题。有什么想法吗?
答案 0 :(得分:0)
我将假设这类似于您的代码:
ul
- each user in users
li user.name
此问题是在行中以-
开始的破折号(each
)。破折号会将行的其余部分转换为unbuffered code,但each
不是代码。
渲染一个用户的原因可能与玉/ pug处理该行的方式有关,我敢打赌它会将第一个存储在内存中,但无法处理循环。
无论如何,这是遍历users数组的正确语法:
ul
each user in users
li user.name