Допустим, у меня есть большой список предметов, куда пользователь может перейти, и избранные предметы по своему желанию. Эти избранные затем переходят на новый узел userLikedItems/userUID/
.
При сохранении избранного я пытаюсь найти лучший способ сделать это:
Вот мой текущий дублирующий подход:
//duplicating all the data when a user favourites an item into their own node under userLikedItems
{
"hwUjzftGyCgMrRgNv4Djg5F4ZCQ2" : {
"24K Carrot" : {
"effects" : {
"Euphoria" : true,
"Happy" : true,
"Relaxing" : true,
"Sleepy" : true
},
"medical" : {
"Arthritis" : true,
"Bipolar Disorder" : true,
"Chronic Pain" : true,
"Depression" : true,
"Fatigue" : true,
"Inflammation" : true,
"Insomnia" : true,
"Loss of Appetite" : true,
"Migraines" : true,
"PTSD" : true,
"Stress" : true
},
"levels" : "18% - 24%",
"title" : "24K Carrot",
"titleLowercase" : "24k Carrot",
"uid" : "24K Carrot"
},
"2 Pac" : {
"effects" : {
"Cerebral" : true,
"Focus" : true,
"Happy" : true,
"Horny" : true,
"Relaxing" : true,
"Uplifting" : true
},
"medical" : {
"Arthritis" : true,
"Cramps" : true,
"Depression" : true,
"Gastrointestinal Disorder" : true,
"Loss of Appetite" : true,
"Migraines" : true
},
"levels" : "29%",
"title" : "2 Pac",
"titleLowercase" : "2 pac",
"uid" : "2 Pac"
},
}
}
Вот следующий подход, в котором я пытаюсь определить, является ли это лучшей практикой, чем мой нынешний подход:
//data stored with only uid:true under user's favourites node
{
"hwUjzftGyCgMrRgNv4Djg5F4ZCQ2" : {
"24K Carrot" : true,
"2 Pac" : true,
"Triple Take" : true,
}
// fetching the rest of the data inside list item
componentDidMount() {
firebase.database().ref('/userLikedItems').child(this.props.user.item.uid).once('value', snapshot => {
const itemData = snapshot.val();
this.setState({
name: itemData.name,
image: itemData.image,
type: itemData.type
});
});
}
Таким образом, в основном, когда элемент списка смонтирован, я вызываю этот запрос, чтобы получить остальные данные. Я беспокоюсь, что это плохая практика.
Прямо сейчас я дублирую все данные элемента в узле userLikedItems, что означает, что мне не нужно было бы выполнять этот запрос для каждого элемента, вместо этого я просто загрузил бы все данные из узла пользователей - проблема в том, что я Я должен использовать облачную функцию, чтобы поддерживать согласованность данных при изменении основного элемента, и в моей базе данных много повторяющихся данных, которые вместо этого могут быть просто логическим значением для каждого элемента.
Я ценю все отзывы!
Приветствие.