在Node.js-Ejs-Mongojs堆栈上“没有方法'forEach'TypeError”

时间:2014-03-03 19:29:11

标签: node.js mongodb express foreach

我在app.js上有这个代码,这是一个回调,其中找到了“locale”集合的所有内容:

tester = function(callback) {
db.locale.find({}, function(err, locale) {
    callback( null, locale )
  });
};

当访问“index”(主页)时将其设置为“title”变量,并将“locale”集合内容传递给变量“content”“stringifying”它(如果我没有,我得到[object] ],[对象]):

app.get('/', function(req, res) {
tester(function(err, locale) {
res.render('index', {title: "This is a test server", content: JSON.stringify(locale)});
});
});

视图“index.ejs”中的 forEach ,它应该只返回“title”集合字段:

<ul>
<% content.forEach( function( item ){ %>
<li><%= item.title %></li>
<% }); %>
</ul>

无论如何问题是当我浏览页面时,我得到一个“'TypeError'没有方法'forEach'”。什么可能导致这种行为?谢谢!

1 个答案:

答案 0 :(得分:2)

您在渲染之前对locale对象进行字符串化。字符串没有forEach方法,只有数组!只要您实际上没有计划将整个content对象打印到页面,并假设locale是一个Javascript对象,您可以完全跳过stringify部分,然后执行:

res.render('index', {title: "This is a test server", content: locale});