使用bookshelf.js按类别获取帖子

时间:2014-10-10 17:44:06

标签: node.js many-to-many bookshelf.js

我正在使用bookshelf.js作为节点的ORM。我有2个型号

Post = bookshelf.Model.extend({
  tableName: 'posts',
  categories: function () {
      return this.belongsToMany('Category');
  }
});

Category = bookshelf.Model.extend({
  tableName: 'categories',
  posts: function () {
     return this.belongsToMany('Post');
  }
});

它们通过categories_posts表相关,因此它具有多对多的关系。

现在我希望用户能够查看特定类别中的所有帖子。但我不想要所有的帖子,我想要分页。但是我无法获取特定类别下的总帖子,它总是返回系统中存在的总帖子。

我已经尝试了Category.forge({id: id}).posts().query().count('*').then(function(total) {});,但总数等于posts表中的总帖子数,而不是id标识的类别下的总帖子数。这是否可能,或者我应该创建一个直接查询categories_posts表的帮助方法?

感谢。

1 个答案:

答案 0 :(得分:1)

好的我觉得我找到了解决方案。

Category.forge({id: id}).fetch({withRelated: [{posts: function(q) {
    q.count('* AS count');
}}]})
.then(function(total) {
    console.log(total.toJSON().posts[0].count);
});

将在id标识的类别下提供正确的帖子值。