如何使用variables而不是stringsortingMongoose上的数组索引?
我试图根据variables的索引值对数据进行sorting。
我想有totalClicks[0]
,但totalClicks[0]
语法不起作用。 我search并尝试使用'totalClicks.0'
,这工作正常。 但我需要检查req.params.bossId
基于array[req.params.bossId]
对数据进行sorting。
这是第一个硬编码的代码。
User.find({}).sort({ 'totalClicks.0' : '1'}).exec( function (err, data) { res.json(data); });
这个dynamicselectsorting的数组字段的代码不工作,整个.sort方法被忽略。
var bossId = req.params.bossId; var totalClicksId = 'totalClicks.' + bossId; console.log(totalClicksId); // totalClicks.0 console.log(typeof(totalClicksId)); // string User.find({}).sort({ totalClicksId : '1'}).exec( function (err, data) { res.json(data); });
如果ID
variables是0
,他们我想通过totalClicks[0]
sorting数据。
如果ID
variables是1
,他们我想通过totalClicks[1]
sorting数据。
我需要接收一个variablesbossId
并使用该variables,基于array[bossId]
对数据进行sorting。 我怎么能这样做?
附录:
模型:
[ { "username": "p", "totalClicks": [ 67, 25 ] }, { "username": "kk", "totalClicks": [ 61, 38 ] } ]
你不能用一个包含string的variables来设置一个对象键,而你的sorting函数基本上把一个对象作为参数。
.sort({key : value})
用dynamic键创build一个对象,我们必须这样做
var obj = {}; var key = 'something'; obj[key] = 'value'; // now obj === {'something' : 'value'}
所以解决的办法是先创build对象,然后传入
var totalClicksId = 'totalClicks.' + req.params.bossId; var obj = {}; obj[totalClicksId] = '1'; User.find({}).sort(obj).exec(function (err, data) { res.json(data); });