Цель состоит в том, чтобы перейти от этого:
const team1 = {
members: [
{
role: 'Employee',
name: 'A',
},
{
role: 'Leader',
name: 'B',
subs: [
{
role: 'Employee',
name: 'C'
},
{
role: 'Leader',
name: 'D',
subs: [
{
role: 'Employee',
name: 'E'
}
]
}
]
}
]
};
к этому:
{"_id":"5b9692afdbc5ae16048dc5ec","members":[{"_id":"5b9692afdbc5ae16048dc5f1","role":"Employee","name":"A"},{"_id":"5b9692afdbc5ae16048dc5ed","role":"Leader","name":"B","subs":[{"_id":"5b9692afdbc5ae16048dc5f0","role":"Employee","name":"C"},{"_id":"5b9692afdbc5ae16048dc5ee","role":"Leader","name":"D","subs":[{"_id":"5b9692afdbc5ae16048dc5ef","role":"Employee","name":"E"}]}]}],"__v":0}
В одной строке:
const data = new Team(team1);
data.save();
Я достиг этого, выполнивэта конфигурация:
const HumanSchema = new Schema({
name: String,
}, { discriminatorKey: 'role'});
const EmployeeSchema = new Schema({}, { discriminatorKey: 'role'});
const LeaderSchema = new Schema({subs: [HumanSchema]}, { discriminatorKey: 'role'});
const TeamSchema = new Schema({
members: [HumanSchema]
}, {discriminatorKey: 'role'});
TeamSchema.path('members').discriminator('Employee', EmployeeSchema);
TeamSchema.path('members').discriminator('Leader', LeaderSchema);
LeaderSchema.path('subs').discriminator('Employee', EmployeeSchema);
LeaderSchema.path('subs').discriminator('Leader', LeaderSchema);
Итак, во-первых, это лучший способ сделать это?Или есть какой-то другой простой способ получить тот же результат?
Во-вторых, давайте предположим, что мы хотим построить другую команду из части первой, например:
const data = new Team(team1);
const res = data.save();
const team2 = res.members[1].subs;
/* which is [{"_id":"5b9692afdbc5ae16048dc5f0","role":"Employee","name":"C"},{"_id":"5b9692afdbc5ae16048dc5ee","role":"Leader","name":"D","subs":[{"_id":"5b9692afdbc5ae16048dc5ef","role":"Employee","name":"E"}]}] */
const data2 = new Team(team2);
И затемсотрудник хочет изменить свое имя. Как я могу обновить его в обеих командах из одного запроса?
Если я не могу предположить, что мне нужно изменить конфигурацию схемы, что будет лучше?(помня, мне нужно создать команду в одном запросе от json)