我已经基于mongodb和express制作了这个简单的应用程序。我正在尝试在ejs页面中显示一个数组,但是仅显示该数组对象中的一些参数。目前,它要么不显示任何内容,要么不显示整个json对象,具体取决于我的尝试。
这是我的控制器的相关部分:
query.exec(function (err, countries){
if(err){
console.log(err);
return next(err);
}
countries.sort((a, b) => {
return a.toString().localeCompare(b.toString());
});
console.log(countries);
res.render('pages/index',{
countries: countries
});
我的ejs代码没有显示
<select class="form-control" id="countriesSelect" name="country">
<% countries.forEach(function(country) { %>
<option><%= country.Age %></option>
<% }); %>
</select>
控制台日志很好:
[ { Country: 'Albania', Age: 18 },
{ Country: 'Algeria', Age: 18 },
{ Country: 'Andorra', Age: 18 },
{ Country: 'Argentina', Age: 17 },
{ Country: 'Australia', Age: 16 },
{ Country: 'Austria', Age: 18 },
{ Country: 'Azerbaijan', Age: 18 },
{ Country: 'Bahamas', Age: 17 },
{ Country: 'Bahrain', Age: 18 },
{ Country: 'Belarus', Age: 18 },
{ Country: 'Belgium', Age: 18 },
{ Country: 'Bolivia', Age: 18 },
{ Country: 'Bosnia and Herzegovina', Age: 18 },
{ Country: 'Brazil', Age: 18 },
{ Country: 'Bulgaria', Age: 18 },
{ Country: 'Cambodia', Age: 18 },
{ Country: 'Canada', Age: 16 },
{ Country: 'Chile', Age: 17 },
{ Country: 'China', Age: 18 },
{ Country: 'Colombia', Age: 16 }
...
这是页面的屏幕截图:
我希望在组合框中仅显示国家名称。 (国家/地区),例如“阿尔及利亚”,“美国”
PS:我知道命名不好,我将重构数据库。
PSS:我是ejs和node的新手,所以这对我来说很难调试。抱歉,这是一个小问题
答案 0 :(得分:0)
有一个错字<option> <%= country.Age %> </li>
假定为<option> <%= country.Age %> </option>
的地方
<select class="form-control" id="countriesSelect" name="country">
<% countries.forEach(function(country) { %>
<option><%= country.Age %></li> // <------ this line
<% }); %>
</select>
答案 1 :(得分:0)
我找到了解决方法。我应该添加.toJson以获得实际的对象。
这里是解决方法:
<select class="form-control" id="countriesSelect" name="country">
<% countries.forEach(function(country) { %>
<option><%= country.toJSON().Country %></option>
<% }); %>
</select>