#node.js #mongodb #express #mongoose
Вопрос:
Мне нужна помощь в сортировке данных ответов в соответствии со схемой.
Это мой schema
const RoleModel = new Schema({
name : {...
},
description:{...
},
permission:{...
}
},{timestamps: false})
и вот мой текущий ответ
{
"message": "Displaying data",
"data": [
{
"permission": {...
},
"_id": "615b378a3eca06e2194c2204",
"name": "SuperAdmin",
"__v": 0
},
{
"permission": {...
},
"_id": "615b396f3eca06e2194c220a",
"name": "Reporter",
"__v": 0
},
{
"permission": {...
},
"_id": "615b39dea1e3f384847014d1",
"name": "Finance",
"description": "nodescription",
"__v": 0
}
]
}
Я хочу, чтобы данные ответа были отсортированы следующим образом
"data" : [
{
"_id" :615b378a3eca06e2194c2204, // first key
"name": superadmin, // second key
"permission":{...}, // third key
"__v": 0 // last key
},
{
"_id" :615b378a3eca06e2194c2204, // first key
"name": superadmin, // second key
"permission":{...}, // third key
"__v": 0 // last key
}
...
]
Должен ли я создать новую переменную с определенным ключевым объектом и назначить ей все данные или есть правильный способ сделать это?
Спасибо
Ответ №1:
Вы можете использовать project
методологию find()
в mongodb для отображения того, как вы хотите. Ниже у меня есть код для вас:
db.studentdatas.find({},{_id:1, name:1, permission: 1, __v:1}).sort({name:1})
1 в find() показано, что вы хотите, чтобы это поле было видно/спроецировано, которое находится в {}.
Здесь вам не потребуется сортировка. Но если вы хотите отсортировать данные в любом поле на основе имеющихся в нем данных, вы можете использовать sort()
либо 1, либо -1.
А для отображения данных ответа вы можете написать в nodejs/expressjs:
res.send(response.data)
где ваше response.data
то, что вы упомянули в своем вопросе :
"data" : [
{
"_id" :615b378a3eca06e2194c2204, // first key
"name": superadmin, // second key
"permission":{...}, // third key
"__v": 0 // last key
},
{
"_id" :615b378a3eca06e2194c2204, // first key
"name": superadmin, // second key
"permission":{...}, // third key
"__v": 0 // last key
}
...
]
Я надеюсь, что это то, о чем вы хотели спросить.