[英]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.