0

我在 NodeJS 和 MongooseJS ODM 中有基于 REST 的 API。获取部门列表的URL 是http : //localhost:25718/Department?SortBy=Name&SortType=asc (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)以升序排序。但不会以任何方式降序。请给出解决方案。

4

2 回答 2

1

我无法重现您遇到的问题。我想说发布有关您正在查询的集合的信息以及您对它的索引。

我确实重写了您的代码以更易于阅读:

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)

我刚刚意识到排序函数的语法不正确。请查看更正后的代码。

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

于 2012-10-26T15:03:22.910 回答
0

文档在这里解释:http: //mongoosejs.com/docs/api.html#query_Query-sort

于 2012-10-30T05:15:46.720 回答