0

ノードの ORM として bookshelf.js を使用しています。私は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) {});内の合計投稿に等しくなります。これは可能ですか、またはテーブルを直接クエリするヘルパー メソッドを作成する必要がありますか?postsidcategories_posts

ありがとう。

4

1 に答える 1

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

于 2014-10-10T18:16:54.723 に答える