在MongooseJS 3.3.1中按升序和降序排序

时间:2012-10-26 11:09:53

标签: node.js mongodb mongoose

我在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)按升序排序。但不会以任何方式降序。 请给出一个解决方案。

2 个答案:

答案 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)