书架JS关系 - 获取计数

时间:2015-08-24 08:53:47

标签: node.js postgresql relational-database bookshelf.js

我试图让用户数量属于特定公司。

这是我的模特;

var Company = Bookshelf.Model.extend({
    tableName: 'companies',
    users: function () {
        return this.hasMany(User.Model, "company_id");
    },
    users_count : function(){
        return new User.Model().query(function(qb){
            qb.where("company_id",9);
            qb.count();
        }).fetch();
    },
    organization: function () {
        return this.belongsTo(Organization.Model, "organization_id");
    }
});
  • 方法"用户"效果很好,没问题。
  • 方法" users_count"查询运作良好,但无法获得"公司"模型。

在路线中,我使用这样的书架模型;

new Company.Model({id:req.params.id})
            .fetch({withRelated:['users']})
            .then(function(model){
                res.send(model.toJSON())
            })
            .catch(function(error){
                res.send(error);
            });

我应该如何使用users_count方法,我有点困惑(可能是因为承诺)

2 个答案:

答案 0 :(得分:2)

查看bookshelf-eloquent扩展程序。 withCount()函数可能就是你要找的东西。您的代码看起来像这样:

let company = await Company.where('id', req.params.id)
    .withCount('users').first();

答案 1 :(得分:0)

User.collection().query(function (qb) {
  qb.join('courses', 'users.id', 'courses.user_id');
  qb.groupBy('users.id');
  qb.select("users.*");
  qb.count('* as course_count');

  qb.orderBy("course_count", "desc");
})