呈现分类的文章(对数组不太了解)

时间:2018-07-24 13:07:40

标签: javascript arrays node.js mongodb

因此,我的应用程序中有类别和文章,需要在此处进行分类。但是我不了解的是将它们放入数组然后显示给他们,因为我对数组了解不多。 第一次尝试就是这样

router.get("/", (req, res, next) => {
  var load = 0;
  Category.find({}, function(err, category) {
    for (var i= 0; i < category.length; i ++){
      Article.find({"category": category[i].title}).sort({"date": -1}).exec(function(err, articles) {
        load ++;
        articles = articles.slice(0, 3);
        if(load === category.length) {
          res.render("index", { categories: category, articles: articles});
        }
      });
    }  
  });  
});

这是我的index.hbs文件

{{#each categories}}
    <div class="category">
        <a href="/category/{{this._id}}">{{this.title}}</a>
    </div> 
    {{#each ../articles}}
        <div class="row">
        {{#ifEquals ../this.title   this.category}}
                 <div class="col-sm-4 col-md-4">
                <div class="card">
                    <img class="card-img-top" src="images/sport.jpg" alt="..." class="img-responsive">
                    <div class="card-body">
                        <h5 class="card-title">{{this.title}}</h5>
                        <p class="card-text">{{this.descript}}</p>
                        <div>
                            {{this.time}}
                            <a href="/articles/{{this._id}}" class="btn btn-success float-right">View Article</a>
                        </div>
                    </div>
                </div>
            </div>  
        {{/ifEquals}}
        </div>  
    {{/each}}
{{/each}} 

how it looks

第二次尝试是

router.get("/", (req, res, next) => {
  var artikli = [];
  var load = 0;
  Category.find({}, function(err, category) {
    for (var i= 0; i < category.length; i ++){
      Article.find({"category": category[i].title}).sort({"date": -1}).exec(function(err, articles) {
        load ++;
        articles = articles.slice(0, 3);
        artikli.push(articles);
        console.log(load);
        if(load === category.length) {
          res.render("index", { categories: category, articles: artikli});
        }
      });
    }  
  });  
});

{{# each articles }}
    <div class="row">
        {{# each this }}
            <div class="col-sm-6 col-md-2">
                <div class="card">
                    <img class="card-img-top" src="images/tech.jpg" alt="..." class="img-responsive">
                    <div class="card-body">
                        <h5 class="card-title">{{this.title}}</h5>
                        <p class="card-text">{{this.descript}}</p>
                        <div>
                            {{this.date}}
                            <a href="/articles/{{this._id}}" class="btn btn-success float-right">View Article</a>
                        </div>
                    </div>
                </div>
            </div>

        {{/each}}
    </div>
{{/each}}

how it looks

如您所见,我第一次尝试将其排序正确,但第一类中缺少文章,第二次我将其全部获得,但我不知道如何像第一类那样将它们放在其类别之后。因此,由于对数组的了解不足,我陷入了困境。如果有人可以提出解决此问题的正确方法,我将不胜感激。

0 个答案:

没有答案