Рассмотрим три следующих примера структуры данных с одной и той же информацией:
//the properties are nested
{
clientOne: {
users: {
userOne: {
userType: "admin"
},
userTwo: {
userType: "user"
}
},
projects: {
projectOne: {
elements: {
elementOne: "a",
elementTwo: "b",
elementThree: "c"
},
collections: {
collectionOne: {
elementOne: {
elementTwo: {
elementThree: true
}
}
}
}
}
}
}
}
В приведенном выше примере каждая информация находится в одном и том же месте, дочерние данные вложены в своего родителя.
//the properties are flattened, parent contains it's children
{
clients: {
clientOne: {
users: {
userOne: true,
userTwo: true
},
projects: {
projectOne: true
}
}
},
users: {
userOne: {
userType: "admin"
},
userTwo: {
userType: "user"
}
},
projects: {
projectOne: {
elements: {
elementOne: true,
elementTwo: true,
elementThree: true
},
collections: {
collectionOne: true
}
}
},
elements: {
elementOne: "a",
elementTwo: "b",
elementThree: "c"
},
collections: {
collectionOne: {
elementOne: {
elementTwo: {
elementThree: true
}
}
}
}
}
В приведенном выше примере свойства «независимы» друг от друга, родитель просто указывает на маршрут, где находится его дочерний элемент.
//the properties are flattened, child contains it's parent
{
clients: {
clientOne: true
},
users: {
userOne: {
userType: "admin",
clientId: "clientOne"
},
userTwo: {
userType: "user",
clientId: "clientOne"
}
},
projects: {
projectOne: true
},
elements: {
elementOne: {
value: "a",
projectId: "projectOne"
},
elementTwo: {
value: "b",
projectId: "projectOne"
},
elementThree: {
value: "c",
projectId: "projectOne"
}
},
collections: {
collectionOne: {
projectId: "projectOne",
value: {
elementOne: {
elementTwo: {
elementThree: true
}
}
}
}
}
}
В приведенном выше примере дочерний элемент указывает на егопрямой родительский идентификатор.
Три базы данных содержат одинаковую информацию, но по-разному.В каких случаях нужен какой метод?