bookshelf.js统计方法

我search高低find如何做基本的计数(如SELECT COUNT(东西)从表)与Bookshelf.js,但无济于事。 有什么我失踪? 或者它只是用于手动select查询?

谢谢!

现在这是一个手动查询…例如:

bookshelf.knex(tableName).count('columnName').then(... 

为什么会出现这种情况呢?这是一个长长的故事,但主要是因为关系中有一些复杂的因素,我不想为了在那里暂时停留在那里做一半的工作。最终的解决办法是将有:

 model.query().count(column).then(... 

但是,目前这个变种knex查询生成器实例,所以不太合适。 我一直在做一个knex的重构,我期待在不久的将来实现这个。

以下是我目前用来从模型中执行以下操作的格式:

 var Sample = bookshelf.Model.extend({ tableName: 'example', count: function (cb) { bookshelf.knex('example') .count('id') .then(function (count) { cb(null, count) }) .catch(function (err) { cb(err) }) } }) 

现在,要计算这张表,只需打电话

 new Sample().count(function(err, result) { console.log(result) }); 

“//user.js var db = require('./ db'); var User = db.Model.extend({
tableName:'users',hasTimestamps:true,}); module.exports = User;

 //main.js 

var User = require('./ user'); User.where('pet', 'dog').count('*') .then(function(count) { console.log("Total Count : " , count); });

在上面的代码片段“用户是一个模型”具有像宠物,名称的查询将被视为如下处理select count(*)where pet ='dog';

 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"); }) 

这是一个非常简单的解决scheme,只需使用Bookshelf.knex.raw('count(id)as count')

 ReactionsDb .query(function(qb) { qb.groupBy('reaction_type'); }) .fetchAll({columns: ['reaction_type', Bookshelf.knex.raw('count(id) as count')]});