• node.js---sails项目开发(6)--- 实现分页功能


    只需要添加一个文件即可  api/blueprints/find.js     代码如下

    /**
     * Module dependencies
     */
    var util = require('util'),
      actionUtil = require('../../node_modules/sails/lib/hooks/blueprints/actionUtil');
    
    
    
    /**
     * Find Records
     *
     *  get   /:modelIdentity
     *   *    /:modelIdentity/find
     *
     * An API call to find and return model instances from the data adapter
     * using the specified criteria.  If an id was specified, just the instance
     * with that unique id will be returned.
     *
     * Optional:
     * @param {Object} where       - the find criteria (passed directly to the ORM)
     * @param {Integer} limit      - the maximum number of records to send back (useful for pagination)
     * @param {Integer} skip       - the number of records to skip (useful for pagination)
     * @param {String} sort        - the order of returned records, e.g. `name ASC` or `age DESC`
     * @param {String} callback - default jsonp callback param (i.e. the name of the js function returned)
     */
    
    module.exports = function findRecords (req, res) {
    
      // Look up the model
      var Model = actionUtil.parseModel(req);
    
      // If an `id` param was specified, use the findOne blueprint action
      // to grab the particular instance with its primary key === the value
      // of the `id` param.   (mainly here for compatibility for 0.9, where
      // there was no separate `findOne` action)
      if ( actionUtil.parsePk(req) ) {
        return require('./findOne')(req,res);
      }
    
      // Lookup for records that match the specified criteria
      var query = Model.find()
      .where( actionUtil.parseCriteria(req) )
      .limit( actionUtil.parseLimit(req) )
      .skip( actionUtil.parseSkip(req) )
      .sort( actionUtil.parseSort(req) );
    
    
      
    
      // TODO: .populateEach(req.options);
      query = actionUtil.populateRequest(query, req);
      query.exec(function found(err, matchingRecords) {
        if (err) return res.serverError(err);
    
        // Only `.watch()` for new instances of the model if
        // `autoWatch` is enabled.
        if (req._sails.hooks.pubsub && req.isSocket) {
          Model.subscribe(req, matchingRecords);
          if (req.options.autoWatch) { Model.watch(req); }
          // Also subscribe to instances of all associated models
          _.each(matchingRecords, function (record) {
            actionUtil.subscribeDeep(req, record);
          });
        }
    
        // get pagination info and wrap results in struct
    
        var metaInfo,
            criteria = actionUtil.parseCriteria(req),
            skip = actionUtil.parseSkip(req),
            limit = actionUtil.parseLimit(req);
        
        Model.count(criteria)
          .exec(function(err, total){
          if (err) return res.serverError(err);
          
          metaInfo = {
            start : skip,
            end : skip + limit,
            limit : limit,
            total : total,
            criteria: criteria
          };
    
          res.ok({info: metaInfo, items: matchingRecords});
    
        });
      });
    };
    

      

    重写路由(/:modelIdentity/find)

    查看效果,请输入如下链接, 详情 请看我的github  https://github.com/shenggen1987/sails-demo.git

    http://localhost:1337/order/find?limit=1&skip=1

    {
      "info": {
        "start": 1,
        "end": 2,
        "limit": 1,
        "total": 2,
        "criteria": {}
      },
      "items": [
        {
          "name": "000",
          "age": 92,
          "phone": "15268155415",
          "createdAt": "2017-02-14T09:15:08.242Z",
          "updatedAt": "2017-02-14T09:15:08.242Z",
          "id": "58a2ca9c8a7b1e1500883405"
        }
      ]
    }
    

      

  • 相关阅读:
    商品翻牌效果(纯css)
    3D旋转相册(纯css)
    3D旋转
    前端搜索js
    js打字的效果
    淡入淡出,类似于轮播图
    返回顶部
    java设计模式--状态模式
    java设计模式--抽象工厂模式
    java设计模式--观察者模式
  • 原文地址:https://www.cnblogs.com/shenggen/p/6402523.html
Copyright © 2020-2023  润新知