真的很感激能帮助我保存我的头发。我使用node.js + express + mongoDB + EJS构建基本的CRUD应用程序。我得说,EJS有可怕的文档,让我们的新手很难学习它。这就是我遇到的问题。
我有一个名为" vehicle"并且我在表单选择元素中显示它。这是我的EJS:
<% vehicles.forEach(function(el){ %>
<option value="<%= el.vehicleModel %>"><%= el.vehicleModel %></option>
<% }); %>
问题是,因为它从MongoDB传递的对象中获取,所以它没有排序。我去谷歌搜索,发现this nice tutorial。 EJS有过滤器(假设)来解决这个问题。所以我尝试了以下代码:
<% vehicles.forEach(function(el){ %>
<option value="<%=: el.vehicleModel | sort %>"><%=: el.vehicleModel | sort %></option>
<% }); %>
但它引发了以下错误:
对象原型可能只是一个Object或null
所以我觉得我的代码出了问题。我用另一个过滤器(downcase)修改它并像这样使用它:
<% vehicles.forEach(function(el){ %>
<option value="<%=: el.vehicleModel | downcase %>"><%=: el.vehicleModel | downcase %></option>
<% }); %>
它有效。角色是小孩子。那么为什么排序过滤器不起作用?
P / S:还有我的另一头发......答案 0 :(得分:1)
排序过滤器将数组作为输入,而不是字符串。以下内容可行:
<%=: vehicles | sort_by:'vehicleModel' | map:'vehicleModel' %>
虽然它可能不会产生您正在寻找的相同结果。在这种情况下,你需要在交出js之前进行排序。如果车辆的数据集非常大,我建议在mongodb查询中对其进行排序。
希望它有所帮助。