我看到下面的代码从火力例如应用程序(一个链接 ):
// 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;
当您添加一个新的职位,将其写入同一个数据对象分为两个不同的地方。 这似乎有点怪我,因为现在则意味着你要照顾,如果你想更新或删除它们两个完全相同的数据。 我宁愿做这样的事情:
post: {
id: 1,
username: 'awesomeMan', // store necessary author's metadata
title: 'hello',
body: 'body
}
author: {
id: 1,
username: 'awesomeMan',
email: 'hello@gmail.com',
posts: {
1: true // index posts by their ids
}
}
如果我这样做,这样,我还是有一点数据的重复,因为我存储用户的元数据username
后内。 但是,是不是比在两个地方有两个完全相同的数据比较好?
编辑:跟进质询,我想添加Comments
资源Posts
。 鉴于这两个选项,哪一个更好,为什么?
选项1。
存储与所有评论postId
此路径下:
/post-comments/${postId}
这是征求意见的唯一路径,我们什么也不存入comments/
选项2。
存储评论中comments/
并通过IDS索引他们posts
。
/post/${postId}/comments #only consists of commentIds that belong to this post
/comments/${commentId}