我最近开始深入研究 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.:我知道最好的方法是将园丁定义为用户的引用,但这将是下一步:)
最佳答案
在 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>
<% } %>
这是我临时写的,如果有什么问题,我深表歉意。
新年快乐:)
关于javascript - Mongoose 查询 : inserting html separators according to object parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418745/