我在NodeJS和MongooseJS ODM中使用基于REST的API。 GET 部门网址列表 http:// localhost:25718 / Department?SortBy = Name&amp; SortType = asc < / strong>(desc-for descending)。排序代码是
var Query = Department.find();
if(req.query.SortBy) {
Query.sort(req.query.SortBy, 1);
if(req.query.SortType) {
if(req.query.SortType.toLowerCase() == 'desc') {
Query.sort(req.query.SortBy, -1);
}
}
}
此剂量不适用于MongooseJS 3.3.1。 Query.sort(req.query.SortBy)按升序排序。但不会以任何方式降序。 请给出一个解决方案。
答案 0 :(得分:0)
我无法重新创建您遇到的问题。我会说发布你正在查询的集合的信息以及你在其上的索引。
我确实重写了您的代码以便于阅读:
var Query = Department.find(),
sortBy = req.query.SortBy,
sortType = (req.query.SortType || 'asc').toLowerCase();
if (sortBy && sortType === 'asc') {
Query.sort(sortBy, 1);
} else if (sortBy && sortType === 'desc') {
Query.sort(sortBy, -1);
}
更新(2012-10-30)
我刚才意识到我的sort函数语法不正确。请参阅更正的代码。
var Query = Department.find(),
sortBy = req.query.SortBy,
sortType = (req.query.SortType || 'asc').toLowerCase();
if (sortBy && sortType === 'asc') {
Query.sort(sortBy); // firstname
} else if (sortBy && sortType === 'desc') {
Query.sort('-'+sortBy); // -firstname
}
有关排序参数语法,请参阅http://mongoosejs.com/docs/api.html#query_Query-sort。
答案 1 :(得分:0)