Я недавно начал использовать Ramda для работы с ответами из JSONAPI. У меня возникли некоторые проблемы, связанные со сложными отношениями и поиском способов получения нужных данных из нескольких объектов
Пользователь назначается для user_role, которому назначена роль. Роль может иметь много user_roles, но user_role назначается только одной роли. У пользователя может быть много user_roles, но для простоты я назначил каждому пользователю только одну user_role.
Моя цель - получить роль, на которую ссылается user_role, и поместить ее в новый «включенный» объект в пользовательском объекте.
Например:
Возьмите эти три набора данных, пользователей, user_roles и ролей:
const users = [
{
id: 1,
attributes: {
firstName: "Bob",
lastName: "Lee"
},
relationships: {
user_roles: {
data: {
id: 1,
type: "user_roles"
}
}
},
type: "users"
},
{
id: 2,
attributes: {
firstName: "Kevin",
lastName: "Smith"
},
relationships: {
user_role: {
data: {
id: 2,
type: "user_roles"
}
}
},
type: "users"
},
];
const user_roles = [
{
id: 1,
attributes: {
createdAt: "7/3/2018",
updatedAt: "7/3/2018"
},
relationships: {
role: {
data: {
id: 3,
type: "roles"
}
}
},
type: "user_roles"
},
{
id: 2,
attributes: {
createdAt: "7/1/2018",
updatedAt: "7/1/2018"
},
relationships: {
role: {
data: {
id: 4,
type: "roles"
}
}
},
type: "user_roles"
}
]
const roles = [
{
id: 3,
attributes: {
name: "manager",
description: "manages stuff"
},
relationships: {
user_roles: {
data: [
{
id: 1,
type: "user_roles"
},
{
id: 10,
type: "user_roles"
}
]
}
},
type: "roles"
},
{
id: 4,
attributes: {
name: "director",
description: "directs stuff"
},
relationships: {
user_roles: {
data: [
{
id: 2,
type: "user_roles"
}
]
}
},
type: "roles"
},
]
Мне нужен объект пользователя, который выглядит следующим образом:
const newUser = [
{
id: 1,
attributes: {
firstName: "Bob",
lastName: "Lee"
},
relationships: {
user_roles: {
data: {
id: 1,
type: "user_roles"
}
}
},
type: "users",
included: [
{
role: {
name: "manager",
description: "manages stuff"
}
}
]
},
{
id: 2,
attributes: {
firstName: "Kevin",
lastName: "Smith"
},
relationships: {
user_role: {
data: {
id: 2,
type: "user_roles"
}
}
},
type: "users",
included: [
{
role: {
name: "director",
description: "directs stuff"
}
}
]
},
];
Я узнал, как объединить два массива вместе, но наличие этого «промежуточного» массива действительно отбросило меня, и у меня возникают проблемы даже с выяснением, с чего начать!