function writeNewPost(uid, username, picture, title, body) {
// A post entry.
var postData = {
author: username,
uid: uid,
body: body,
title: title,
starCount: 0,
authorPic: picture
};
// Get a key for a new Post.
var newPostKey = firebase.database().ref().child('posts').push().key;
// Write the new post's data simultaneously in the posts list and the user's post list.
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
}
Код выше взят из официального документа Firebase.У меня вопрос, могу ли я использовать этот подход для реализации функции, подобной списку избранных?Если я использую этот подход, я получу следующую структуру данных:
posts:{
cYlevsDysdfsd:{
author: 'John Doe',
uid: sfIsdfNsAOQ,
body: 'Hello world!',
title: 'My first post',
starCount: 0,
authorPic: picture
}
}
user-posts:{
sfIsdfNsAOQ:{
cYlevsDysdfsd:{
author: 'John Doe',
uid: sfIsdfNsAOQ,
body: 'Hello world!',
title: 'My first post',
starCount: 0,
authorPic: picture
}
}
}
user-favs:{
Ysfdwefwezc:{
cYlevsDysdfsd:{
author: 'John Doe',
uid: sfIsdfNsAOQ,
body: 'Hello world!',
title: 'My first post',
starCount: 0,
authorPic: picture
}
}
}
Мы можем видеть, что postData сообщения с идентификатором cYlevsDysdfsd повторяется снова и снова.Если у меня есть больше атрибутов в postData, этот подход займет больше места в базе данных.Поэтому мне интересно, будет ли лучше следующая структура данных:
user-posts:{
sfIsdfNsAOQ:{
cYlevsDysdfsd,
second_Post_Id,
third_Post_Id
}
}
user-favs:{
Ysfdwefwezc:{
cYlevsDysdfsd,
second_Fav_Post_Id,
third_Fav_Post_Id
}
}
Во втором подходе я сохраняю только postId в списке избранного и в списке сообщений пользователя.Когда мне нужны данные поста, я просто выбираю данные по пути /posts
на основе postId, используя цикл for.Но этот подход требует больше http запросов.Какой способ лучше?