1

当你想获取所有数据的时候,第一想法肯定就是改skip。代码一般就张这样:

function getAll(Context, ClassRef) {
  var deferred = Q.defer()
  var skip = 0;
  var limit = 500;
  var results = [];

  var query = new Context.Query(ClassRef);
  query.limit(limit)
  function getBunch() {
    query.skip(skip)
    query.find(function (items) {
      _.each(items, function (item) {
        results.push(item)
      })
      if (items.length === limit) {
        skip += limit;
        getBunch();
      } else {
        deferred.resolve(results);
      }
    })
  }
  getBunch()

  return deferred.promise
}

getAll().then(function(results){
  console.log(results.length)
})

但,你会惊奇的发现获得的results里居然有重复的...好吧,看来LeanCloud的默认Query是没有一个默认index的...

简单的做法就是,在query里加个排序。比如在query.limit(limit)后面加个query.ascending('createdAt')


fxp
462 声望59 粉丝

coder in action


引用和评论

0 条评论