javascript – Sails.JS – 获取数据库中对象/行数的计数

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

我试图在生成器中扩展蓝图以公开新的API方法计数并创建计数操作.根据Waterline documentation,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],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);
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...