Я получил следующий ответ от моей базы данных:
[
{
"id": 1,
"select": true,
"insert": true,
"update": true,
"delete": false,
"template": {
"id": 1,
"name": "Template 1"
},
"module": {
"id": 1,
"name": "Module 1"
}
}
{
"id": 2,
"select": false,
"insert": true,
"update": true,
"delete": false,
"template": {
"id": 1,
"name": "Template 1"
},
"module": {
"id": 2,
"name": "Module 2"
}
}
{
"id": 3,
"select": true,
"insert": true,
"update": false,
"delete": false,
"template": {
"id": 2,
"name": "Template 2"
},
"module": {
"id": 1,
"name": "Module 1"
}
}
]
Так что мои root
объекты имеют два вложенных объекта (template
, module
) + свои собственные свойства.
Я хочу преобразовать мой массив таким образом, чтобы template
был root
объектом, обладал свойством modules
с массивом объектов модулей. Module
объект должен иметь свойство permissions
с select, insert, update, delete
подпорками внутри. Как видите, template
объекты дублируются. Я хочу избежать дублирования template
объектов в моем массиве результатов, они должны быть объединены.
Таким образом, результат должен выглядеть следующим образом:
[
{
"id":1,
"name":"Template 1",
"modules":[
{
"id":1,
"name":"Module 1",
"permissions":{
"select":true,
"insert":true,
"update":true,
"delete":false
}
},
{
"id":2,
"name":"Module 2",
"permissions":{
"select":false,
"insert":true,
"update":true,
"delete":false
}
}
]
},
{
"id":2,
"name":"Template 2",
"modules":[
{
"id":1,
"name":"Module 1",
"permissions":{
"select":true,
"insert":true,
"update":false,
"delete":false
}
}
]
}
]
Как этого добиться с помощью lodash?