【问题标题】:Find and count all in Sails.js + Waterline在 Sails.js + Waterline 中查找并计算所有内容
【发布时间】:2015-08-24 07:13:28
【问题描述】:

有没有办法通过单一方法进行 select 查询和 count_all 查询? 出于分页的目的,我们需要知道项目的总数,以便我们可以计算和显示页数。

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:
    getLength: function(req, res) {
        Posts.find({}).exec(function(err, items){
    
            return items.length;
        });
    }
    

    【讨论】:

    【解决方案2】:

    查看 Sails.Js - How I do pagination in sails.Js 在 Waterline 中的分页。

    要获取项目总数,可以使用:

    Post.count().exec(function (err, nbOfInstances) {
        if(err) return res.negociate(err);
    
        return res.ok(nbOfInstances);
    });
    

    【讨论】:

    • 是的,但是我需要调用 Post.find().skip(10).limit(10).exec() { ... } 来获取特定页面的帖子,这是两个方法调用。我的问题是是否有一些方法可以同时请求并返回特定的帖子集合和数据库中的总帖子数。我想要的是一种同时包含两种信息的方法,因此我的编码更少。
    【解决方案3】:

    首先查询并获取数据,然后删除限制,跳过参数并获取计数

    delete query._criteria.limit;
    delete query._criteria.skip;
    Model.count(query._criteria).exec(function countCB(error, count) {
    });
    

    【讨论】:

      【解决方案4】:

      我在一个请求中也找不到任何内置方法来执行此操作,所以我这样做:

      let queryParams = {},
          pageNo = 1,
          perPage = 10;
      Post.count(queryParams)
          .then(_count=>{        
              return {posts_count: _count, 
                     posts: Post.find(queryParams).paginate({page: pageNo, limit: perPage})};
           })
           .then(res.ok)
           .catch(err=>res.negotiate(err.message));
      

      输出:

      /*
      {
         posts_count: 0,
         posts: []
      }
      
      */
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-23
        相关资源
        最近更新 更多