【发布时间】:2015-10-08 15:31:19
【问题描述】:
我无法使用 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() because of performance。当我创建画布的顶级列表时,我更喜欢使用类似的实现。
每个画布都有投票,一个数字,我喜欢按降序排序。但问题是我不再可以使用 ID $lte 因为这不是他们回来的顺序,因为 ObjectId 也是kind of like a timestamp。
有没有一种方法可以使用下一个变量,如上所示,作为下一页选择或任何其他实现的开始,而不使用跳过或至少使用它的性能良好?
【问题讨论】:
-
我明确告诉我不想使用skip,为什么要重复?
标签: javascript node.js mongodb pagination