如何使用mongoose动态排序,改变字段和方向

时间:2015-12-09 04:16:21

标签: node.js mongodb mongoose

exports.findall = function(req, res) {  
    var limit1 = req.params.limit;
    var stype=req.params.sorttype;
    var sdir=req.params.sortdirection;
    console.log(stype);
    console.log(sdir);
    test.find().sort({ stype : sdir }).select('_id').select('Name').skip(limit1).limit(100).exec(function(err, results) {
    res.send(results);
    });
};

Mongoose动态排序改变字段和方向,我必须使用上面的代码进行排序。但是代码不能正常工作,上面的代码不能动态更改字段,所以响应不正确,请给出一些解决方案来解决这个问题。
fiddle 上面的链接我必须动态更改名称和方向,我的响应不在名称字段上排序。

2 个答案:

答案 0 :(得分:6)

您不能将这样的对象传递给sort函数。您需要为您的用例创建一个对象。示例代码如下所示:

var sortObject = {};
var stype = req.params.sorttype;
var sdir = req.params.sortdirection;
sortObject[stype] = sdir;
test.find().sort(sortObject)

以上代码可让您在任何字段上动态排序。

答案 1 :(得分:0)

如果您使用的是节点v4,则可以使用ES6语法:

   test.find().sort({[stype]: sdir});