Javascript 带排序的猫鼬分页
我很难用Mongoose和NodeJs进行分页。在我的收藏中,我使用ID创建分页,如下所示: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
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进行选择。