Я пытался обернуть мою голову вокруг нормализации вложенных данных для моего Redux магазина с https://github.com/paularmstrong/normalizrНормализация вложенности данных для React/Redux App
После входа в систему пользователь, я получаю обратно ответ с их информацией и отношения к другим типы данных.
{
"data": {
"id": "207",
"type": "users",
"attributes": {
"email": "[email protected]",
"last-sign-in-at": null,
"username": "april.johns",
"first-name": "Audie",
"last-name": "Halvorson",
"short-bio": "Ut exercitationem ",
"bio": "Ut exercitationem totam perferendis consequatur dolorem veritatis dolorem.",
"location": null,
"gender": "male",
"birthday": "1986-10-07",
"email-digest": "daily_digest",
"email-notifications": "instantl_notifications",
"auth-token": "_HV-S6qrdobecr-rr6gs",
"avatar-large-2x": "/missing_avatar.png",
"avatar-large": "/missing_avatar.png",
"cover-desktop-2x": "/missing_cover.png",
"cover-desktop": "/missing_cover.png",
"cover-mobile-2x": "/missing_cover.png",
"cover-mobile": "/missing_cover.png",
"wp-id": null,
"created-at": "2016-10-07T23:16:13.565Z",
"updated-at": "2016-10-07T23:16:13.565Z"
},
"relationships": {
"websites": {
"data": [
{
"id": 11,
"url": "http://mohr.org/coy_rowe",
"user-id": 207,
"created-at": "2016-10-07T23:16:13.651Z",
"updated-at": "2016-10-07T23:16:13.651Z"
}
]
},
"books": {
"data": [
{
"id": 11,
"name": "Outdoors & Industrial",
"image-url": "https://robohash.org/sitveritatisab.png?size=300x300&set=set1",
"author": "Meggie Balistreri",
"created-at": "2016-10-07T23:16:13.629Z",
"updated-at": "2016-10-07T23:16:13.629Z"
}
]
},
"movies": {
"data": [
{
"id": 11,
"name": "Movies, Home & Electronics",
"image-url": "https://robohash.org/quiaarchitectoodit.png?size=300x300&set=set1",
"author": "Eveline Ziemann",
"created-at": "2016-10-07T23:16:13.642Z",
"updated-at": "2016-10-07T23:16:13.642Z"
}
]
},
"interests": {
"data": [
{
"id": 22,
"name": "Synergistic Aluminum Gloves",
"created-at": "2016-10-07T23:16:13.596Z",
"updated-at": "2016-10-07T23:16:13.596Z"
}
]
},
"virtues": {
"data": [
{
"id": 22,
"name": "Ergonomic Wool Gloves",
"created-at": "2016-10-07T23:16:13.582Z",
"updated-at": "2016-10-07T23:16:13.582Z"
}
]
},
"features": {
"data": [
]
},
"strengths": {
"data": [
{
"id": 22,
"name": "Ergonomic Wool Gloves",
"created-at": "2016-10-07T23:16:13.582Z",
"updated-at": "2016-10-07T23:16:13.582Z"
}
]
},
"teachers": {
"data": [
{
"id": 22,
"name": "Ergonomic Wool Gloves",
"created-at": "2016-10-07T23:16:13.582Z",
"updated-at": "2016-10-07T23:16:13.582Z"
}
]
}
}
}
}
После прочтения через много учебников я полагаю, что мои данные нормализованы лучше всего было бы представлено этой формой.
"currentUser" {
"lastUpdated": 0,
"userId": 207,
"attributes": {
"email": "[email protected]",
"last-sign-in-at": null,
"username": "april.johns",
"first-name": "Audie",
"last-name": "Halvorson",
"short-bio": "Ut exercitationem ",
"bio": "Ut exercitationem totam perferendis consequatur",
// etc....
},
"relationships": {
"websites": [11],
"books": [22],
"movies": [33],
"interests": [21],
"virtues": [34],
"features": [22],
"strengths": [15],
"teachers": [45],
}
}
Означает ли это, что я создаю схемы для всех типов отношений?
сайты книга фильмов интересы добродетель особенность сильных учителей
, а затем один relationshipSchema, который получает определенный со всеми этими схемами вложенными? Для всех отношений отношения будут ссылаться в разных областях, хотя на сайте.
ex) страница, на которой они выбирают интересы, и я получаю ответ от всех интересов.
[
{
"id": 54,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
{
"id": 55,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
{
"id": 56,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
{
"id": 57,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
}
]
Что я нормализуют тоже ...
{
54: {
"id": 54,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
55: {
"id": 55,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
56: {
"id": 56,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
},
57: {
"id": 57,
"name": "Fantastic Wooden Hat",
"created_at": "2016-10-12T18:54:01.669Z",
"updated_at": "2016-10-12T18:54:01.669Z"
}
}
Любая помощь будет принята с благодарностью, также статьи, учебные пособия, примеры видео там также.
Спасибо,
Благодарим вас за разъяснение этого. Похоже, я получал маленький спусковой крючок, который был доволен идеей сглаживания моих данных. Прочитав ваш ответ и снова подумав о проблеме. Кажется, что я действительно хочу сосредоточить свои усилия только на выравнивании данных 'отношений', поскольку эти типы отношений будут использоваться в нескольких местах. – VinceBrown