[英]How to sort by Array index on Mongoose using a variable instead of string?
我想拥有totalClicks[0]
,但是totalClicks[0]
语法不起作用。 我已经搜索并尝试使用'totalClicks.0'
,效果很好。 但是我需要检查req.params.bossId
以基于array[req.params.bossId]
对数据进行排序。
这第一个经过硬编码的代码有效。
User.find({}).sort({ 'totalClicks.0' : '1'}).exec(
function (err, data) {
res.json(data);
});
该代码动态选择要排序的数组字段,但不起作用,整个.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
变量为0
,则我想通过totalClicks[0]
对数据进行排序。
如果ID
变量为1
,则我想通过totalClicks[1]
对数据进行排序。
我需要接收一个变量bossId
并使用该变量根据array[bossId]
对我的数据进行排序。 我该怎么办?
附录:
模型:
[
{
"username": "p",
"totalClicks": [
67,
25
]
},
{
"username": "kk",
"totalClicks": [
61,
38
]
}
]
您不能使用包含像这样的字面量的字符串的变量来设置对象键,并且您的sort函数基本上将对象作为参数。
.sort({key : value})
用动态键创建一个对象,我们要做
var obj = {};
var key = 'something';
obj[key] = 'value'; // now obj === {'something' : 'value'}
因此解决方案是先创建对象,然后将其传递
var totalClicksId = 'totalClicks.' + req.params.bossId;
var obj = {};
obj[totalClicksId] = '1';
User.find({}).sort(obj).exec(function (err, data) {
res.json(data);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.