Node.js bookshelf.js计数方法
我到处搜索,想知道如何做基本的计数,比如用Bookshelf.js从表中选择COUNTsomething,但是没有用。我有什么遗漏吗?或者它只是用于手动选择查询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
谢谢 现在是手动查询。。。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
})