无法从ejs访问变量内的字段

时间:2019-07-22 22:40:16

标签: javascript node.js mongodb ejs

我已经基于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 }
...

这是页面的屏幕截图: screenshot

我希望在组合框中仅显示国家名称。 (国家/地区),例如“阿尔及利亚”,“美国”

PS:我知道命名不好,我将重构数据库。

PSS:我是ejs和node的新手,所以这对我来说很难调试。抱歉,这是一个小问题

2 个答案:

答案 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>