Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带排序的猫鼬分页_Javascript_Node.js_Mongodb_Pagination - Fatal编程技术网

Javascript 带排序的猫鼬分页

Javascript 带排序的猫鼬分页,javascript,node.js,mongodb,pagination,Javascript,Node.js,Mongodb,Pagination,我很难用Mongoose和NodeJs进行分页。在我的收藏中,我使用ID创建分页,如下所示: var limit = req.params.limit ? req.params.limit : 1; limit ++; if(req.params.start){ var start = mongoose.Types.ObjectId(req.params.start); Canvas.find().where({_id : {$lte : start}}).sor

我很难用Mongoose和NodeJs进行分页。在我的收藏中,我使用ID创建分页,如下所示:

 var limit = req.params.limit ? req.params.limit : 1;
 limit ++; 

 if(req.params.start){
     var start = mongoose.Types.ObjectId(req.params.start); 
     Canvas.find().where({_id : {$lte : start}}).sort({"_id": -1}).limit(limit).exec(function(err, items){
           if(items.length > limit -1){
               var last = items.pop(); 
               items.push({next : last._id});  
         }
       });
 }else{
     Canvas.find().sort({"_id": -1}).limit(limit).exec(function(err, items){
         if(items.length > limit -1){
              var last = items.pop(); 
              items.push({next : last._id});  
         }
     });
 }
在这种情况下,这种方法非常有效。我不想使用skip()。当我创建mhy头号画布列表时,我更喜欢使用类似的实现

每个画布都有投票,一个数字,我喜欢按降序排序。但问题是,我不能再使用ids$lte,因为这不是它们返回的顺序,因为ObjectId也是


是否有一种方法可以使用下一个变量(如上所示)作为下一页选择或任何其他实现的开始,而不使用skip或至少在性能正常的情况下使用它

嗯,作为对代码的一个小小调整,您可以使用
排序({voates:-1,_id:-1})
并使用
投票作为主要标准和
\u id
作为次要标准进行分页


除此之外,如果您的记录太多,以至于
skip()。这将需要一些额外的维护来更新边界交叉点上的缓存等,但一旦设置正确,工作将非常顺利。这真的取决于你决定如何前进。不妨同时尝试这两种方法,看看哪种方法最适合您。

可能重复我明确告诉过您我不想使用skip,那么为什么要重复呢?太好了!我将在今天或明天晚些时候试用。我在另一篇文章中读到了关于skip()实现的内容,其中大约有1000个跳过。在我的实现中,这将意味着必须有1000个拥有相同票数的帖子(如果使用skip),这不是不可能的,但可能性很小。但我喜欢有两个键的解决方案。谢谢。这个很有魅力。首先,我只通过投票降序进行选择,让start变量是可选的。第二次我使用上面描述的方法首先通过投票,然后通过id进行选择。