Mongoose Query:根据对象参数插入html分隔符

时间:2017-01-01 20:28:17

标签: javascript mongoose

我最近开始深入研究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。:我知道最好将园丁定义为用户的参考,但这将是下一步:)

1 个答案:

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

我在飞行中写道,如果出现问题就道歉。

祝新年快乐:)