Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js bookshelf.js计数方法_Node.js_Bookshelf.js - Fatal编程技术网

Node.js bookshelf.js计数方法

Node.js bookshelf.js计数方法,node.js,bookshelf.js,Node.js,Bookshelf.js,我到处搜索,想知道如何做基本的计数,比如用Bookshelf.js从表中选择COUNTsomething,但是没有用。我有什么遗漏吗?或者它只是用于手动选择查询 谢谢 现在是手动查询。。。e、 g: bookshelf.knex(tableName).count('columnName').then(... 关于为什么会出现这种情况,说来话长,但主要是因为关系中的一些复杂因素,我不想为了暂时拥有它而在那里砍掉一个半工作的。。。最终的解决方案是: model.query().count(colu

我到处搜索,想知道如何做基本的计数,比如用Bookshelf.js从表中选择COUNTsomething,但是没有用。我有什么遗漏吗?或者它只是用于手动选择查询


谢谢

现在是手动查询。。。e、 g:

bookshelf.knex(tableName).count('columnName').then(...
关于为什么会出现这种情况,说来话长,但主要是因为关系中的一些复杂因素,我不想为了暂时拥有它而在那里砍掉一个半工作的。。。最终的解决方案是:

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

但目前,这是对knex query builder实例的一种变异,因此不太管用。我一直在研究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是一个具有pet和name等属性的模型


生成的查询如下:选择count*from user where pet='dog'

这里有一个非常简单的解决方案,只需使用Bookshelf.knex.raw'countid as count'


从版本0.8.2开始,您可以只使用Collectioncount方法:

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

User.forge({id: 1}).related('comments').count().then(function(count) {
  // count === 16
})
它也可以作为静态方法用于模型类:

User.count().then(function(count) {
  // count === 15
})
它还接受列名,通过排除值为NULL的行来过滤计数结果,并将考虑任何其他定义的查询约束:

User.count('is_active').then(function(count) {
  // count === 8
})

User.where('status', 'single').count().then(function(count) {
  // count === 4
})

只是检查一下你在这方面是否有任何进展?是的,请在下面检查。
User.collection().count().then(function(count) {
  // count === 15
})
User.forge({id: 1}).related('comments').count().then(function(count) {
  // count === 16
})
User.count().then(function(count) {
  // count === 15
})
User.count('is_active').then(function(count) {
  // count === 8
})

User.where('status', 'single').count().then(function(count) {
  // count === 4
})