首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bookshelf.js计数法

bookshelf.js计数法
EN

Stack Overflow用户
提问于 2014-01-28 12:38:50
回答 5查看 9.6K关注 0票数 11

我到处搜索,找出如何使用Bookshelf.js进行基本计数(比如从表中选择计数( SELECT )),但没有结果。我遗漏了什么吗?还是只与手动选择查询一起使用?

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-31 21:29:02

现在是手动查询..。例如:

代码语言:javascript
复制
bookshelf.knex(tableName).count('columnName').then(...

关于为什么会这样,说来话长,但主要是因为关系上的一些复杂因素,我不想为了暂时在那里工作而黑掉一半工作的人。最终的解决办法是:

代码语言:javascript
复制
model.query().count(column).then(...

但是,目前,这会使knex查询构建器实例发生变异,因此不太有效。我一直在致力于一个巨大的重构,我期待着在不久的将来实现这一点。

票数 15
EN

Stack Overflow用户

发布于 2014-12-28 02:50:13

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

代码语言:javascript
复制
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)
      })
  }
})

现在,要计算这个表,只需调用

代码语言:javascript
复制
new Sample().count(function(err, result) {
    console.log(result)
});
票数 3
EN

Stack Overflow用户

发布于 2018-01-21 15:17:45

从0.8.2版本开始,您可以只使用Collection#count()方法:

代码语言:javascript
复制
User.collection().count().then(function(count) {
  // count === 15
})

这可以用于任何集合,比如模型的关系:

代码语言:javascript
复制
User.forge({id: 1}).related('comments').count().then(function(count) {
  // count === 16
})

它还可以作为静态方法用于Model类:

代码语言:javascript
复制
User.count().then(function(count) {
  // count === 15
})

它还接受一个列名来过滤计数的结果,方法是排除值为NULL的行,并将考虑任何其他定义的查询约束:

代码语言:javascript
复制
User.count('is_active').then(function(count) {
  // count === 8
})

User.where('status', 'single').count().then(function(count) {
  // count === 4
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21405762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档