Mongoose pagination with sorting
我很难让Mongoose和NodeJ正常工作。在我的收藏夹中,我使用ID来创建分页,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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或至少以良好的性能使用它?
嗯,稍微修改一下代码,您可以使用
除此之外,如果您正处于一个记录中,而