Javascript Sails.JS-获取数据库中对象/行数的计数

Javascript Sails.JS-获取数据库中对象/行数的计数,javascript,node.js,sails.js,waterline,Javascript,Node.js,Sails.js,Waterline,在Sails.js中,通过生成模型和控制器为您完成了大量工作。控制器允许通过API访问数据。它允许通过传递开始/跳过/偏移和接受/限制来轻松分页。但是为了确定一个集合的最大页面,我需要知道一个集合中有多少项 我尝试在生成器中扩展blueprint,以公开一个新的API方法count,并创建count操作。根据,count是可以在模型上调用的操作。当我调用User.count()时,我得到以下结果: { _context: { identity: 'user', adapter:

在Sails.js中,通过生成模型和控制器为您完成了大量工作。控制器允许通过API访问数据。它允许通过传递开始/跳过/偏移和接受/限制来轻松分页。但是为了确定一个集合的最大页面,我需要知道一个集合中有多少项

我尝试在生成器中扩展blueprint,以公开一个新的API方法
count
,并创建count操作。根据,
count
是可以在模型上调用的操作。当我调用
User.count()
时,我得到以下结果:

{ _context: 
   { identity: 'user',
     adapter: 
      { syncable: false,
        defaults: [Object],
        registerCollection: [Function],
        create: [Function],
        find: [Function],
        update: [Function],
        destroy: [Function],
        count: [Function],
        identity: 'odata',
        globalId: 'odata',
        config: [Object] },
     attributes: {},
     _cast: { _types: [Object] },
     _schema: { context: [Circular], schema: [Object], hasSchema: true },
     _validator: { validations: {} },
     _callbacks: 
      { beforeValidation: [Object],
        afterValidation: [Object],
        beforeUpdate: [Object],
        afterUpdate: [Object],
        beforeCreate: [Object],
        afterCreate: [Object],
        beforeDestroy: [Object],
        afterDestroy: [Object] },
     _instanceMethods: {},
     autoPK: true,
     autoCreatedAt: true,
     autoUpdatedAt: true,
     hasSchema: true,
     migrate: 'alter',
     _model: { [Function] extend: [Function], inject: [Function], __super__: {} },
     _transformer: { _transformations: {} },
     _tableName: 'user',
     _adapterDefs: [ [Object] ],
     _adapter: 
      { adapter: [Object],
        adapterDefs: [Object],
        query: [Circular],
        collection: 'user' },
     syncable: [Function],
     defaults: [Function],
     registerCollection: [Function],
     config: [Function],
     findOneById: [Function: dynamicMethod],
     findOneByIdIn: [Function: dynamicMethod],
     findOneByIdLike: [Function: dynamicMethod],
     findById: [Function: dynamicMethod],
     findByIdIn: [Function: dynamicMethod],
     findByIdLike: [Function: dynamicMethod],
     countById: [Function: dynamicMethod],
     countByIdIn: [Function: dynamicMethod],
     countByIdLike: [Function: dynamicMethod],
     idStartsWith: [Function: dynamicMethod],
     idContains: [Function: dynamicMethod],
     idEndsWith: [Function: dynamicMethod],
     findOneByCreatedAt: [Function: dynamicMethod],
     findOneByCreatedAtIn: [Function: dynamicMethod],
     findOneByCreatedAtLike: [Function: dynamicMethod],
     findByCreatedAt: [Function: dynamicMethod],
     findByCreatedAtIn: [Function: dynamicMethod],
     findByCreatedAtLike: [Function: dynamicMethod],
     countByCreatedAt: [Function: dynamicMethod],
     countByCreatedAtIn: [Function: dynamicMethod],
     countByCreatedAtLike: [Function: dynamicMethod],
     createdAtStartsWith: [Function: dynamicMethod],
     createdAtContains: [Function: dynamicMethod],
     createdAtEndsWith: [Function: dynamicMethod],
     findOneByUpdatedAt: [Function: dynamicMethod],
     findOneByUpdatedAtIn: [Function: dynamicMethod],
     findOneByUpdatedAtLike: [Function: dynamicMethod],
     findByUpdatedAt: [Function: dynamicMethod],
     findByUpdatedAtIn: [Function: dynamicMethod],
     findByUpdatedAtLike: [Function: dynamicMethod],
     countByUpdatedAt: [Function: dynamicMethod],
     countByUpdatedAtIn: [Function: dynamicMethod],
     countByUpdatedAtLike: [Function: dynamicMethod],
     updatedAtStartsWith: [Function: dynamicMethod],
     updatedAtContains: [Function: dynamicMethod],
     updatedAtEndsWith: [Function: dynamicMethod] },
  _method: [Function],
  _criteria: {},
  _values: null }

注意:我正在使用自定义适配器,但我已为适配器创建了一个
count
方法。

要获取用户集合中对象数的计数:

User.count(function (err, num) {
    if(err) {
       return console.log(err);
    }
    console.log(num);
});
要在另一个方法中包装User.count,请执行以下操作:

yourMethod = function (callback) {
    User.count(callback);
}

现在,您可以使用sails可安装钩子通过blueprintapi方法实现计数功能

我在回答中解释道:


您还可以将查询传递给count函数,以获取集合中满足特定条件的项目子集的计数。

User.count(yourCallbackFunction);当然,它是基于回调的。。我不知道我在想什么。这也解释了它返回的原因。。。链式的
User
对象。我没有使用sails,我想应该是User.count(function(err,num){console.log(num);});如果您定义了一个count方法,它应该是:count=function(callback){User.count(callback)};我现在在你的帮助下得到了它。如果您将信息放入答案中,我会将其标记为正确的答案。我想了解如何以及在何处向sails公开count方法,您可以编写答案吗?是否有方法将查询传递给count函数?用例是获取集合中满足特定条件的项目子集的计数。