mongoose Model.find() skip与sort的命令失败。
发布于 4个月前 作者 AngelaDuoduo 1190 次浏览 来自 问答

仿照nodeclude的首页代码想要实现分页功能。调用Model.find(query, callback)操作如下: XXX.find({skip: 0, limit: 20, sort: "-createtime"}, function() {…}); 但是上面这种方式查询的结果为空。 如果query的值是{}, 或者{name: "xiaoming"}这样的按值查询,都没有问题。sort, limit, skip等操作都会有问题,即查询结果为空……求问为什么?!

mongoose的版本是3.8.16, mongodb的版本是2.6。

9 回复

应该是XXX.find({skip: 0, limit: 20, sort:{ "-createtime":1}, function() {…});

@hpgt 是skip, limit, sort在一个大括号中吗? 试了下不行,只有skip和limit也是失败的。

XXX.find({},null,{skip: 0, limit: 20, sort:{ "-createtime":1}}, function() {...});   
应该是这样吧
Model.find(conditions, [fields], [options], [callback])
Parameters:

conditions <Object>
[fields] <Object> optional fields to select
[options] <Object> optional
[callback] <Function>

@jiangli373 成功了!谢谢!我都没看出api是这个意思……

@hpgt 错的。第一个参数是 query,不是 options

我一般很少这么写, 还是喜欢链式调用.

XXX.find().skip(0).limit(20).sort({"-createtime":1}).exec(function(){…})

@alsotang 嗯,是的,我是直接复制下来改的

… if(…) where = …; if(…) where = …; var query = Test.find(where).skip(skip).limit(limit).sort(sort); query.exec(cb); …

我想说,多看官方文档呀。。

回到顶部