0

NodeJS と MongooseJS ODM に REST ベースの API があります。部門のリストを取得するには、 URL はhttp://localhost:25718/Department?SortBy=Name&SortType=asc ( desc-降順) です。そしてソートコードは

 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)

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を参照してください。

于 2012-10-26T15:03:22.910 に答える
0

ドキュメントはここでそれを説明しています: http://mongoosejs.com/docs/api.html#query_Query-sort

于 2012-10-30T05:15:46.720 に答える