我最近开始深入研究JavaScript和NodeJS,为我的论文建立一个项目。
我有一个集合(植物),其对象的属性(园丁:字符串)
在路线上被查询:
app.get("/", function(req, res) {
Plant.find({}).sort('gardener').exec(function(err, plants){
if (err) { console.log(err); }
else {
res.render("index", {plants: plants});
}
});
});
我如何展示所有植物,但为每位园丁放置一个分离器? (园丁将成为用户,因此,可以限制)
像
这样的东西<h4>Gardener <%=plant.gardener%></h4>
[here goes a list of the plants of this gardener]
例如(渲染/):
<h4>Gardener Mary</h4>
... (list of Mary's plants)
<h4>Gardener Joseph</h4>
... (list of Joseph's plants)
<h4>Gardener George</h4>
... (list of George's plants)
[...]
P.S。:我知道最好将园丁定义为用户的参考,但这将是下一步:)
答案 0 :(得分:2)
在你的else语句中你可以重组你的植物数组:
var newPlants = [];
var aux = [];
var previousGardener = "";
plants.forEach(function(plant) {
if(previousGardener === plant.gardener) {
aux.push(plant);
return ;
}
if(previousGardener !== "") {
newPlants.push({ gardener: previousGardener, plants: aux });
aux = [];
}
aux.push(plant);
previousGardener = plant.gardener;
});
if(aux.length > 0) newPlants.push({ gardener: previousGardener, plants: aux });
res.render("index", { plants: newPlants });
你的HTML会是这样的:
<% for(var i = 0 ; i < plants.length ; i++) { %>
<h4><%= plants[i].gardener %></h4>
<ul>
<% for(var j = 0 ; j < plants[i].plants.length ; j++) { %>
<li><%= plants[i].plants[j].description %></li>
<% } %>
</ul>
<% } %>
我在飞行中写道,如果出现问题就道歉。
祝新年快乐:)