Firebase将同一节点保存到不同的位置

时间:2017-05-23 19:17:18

标签: firebase firebase-realtime-database

说我有一个与Firebase链接的博客应用程序。当我发帖时,我希望它能同时发布到公共提要和我的个人资料。我该如何处理在两个不同的地方保存相同的帖子?我应该制作帖子节点的两个副本,还是应该创建一个节点并在我的个人资料中保存对它的引用?

2 个答案:

答案 0 :(得分:1)

由于我不知道您使用的语言,我将使用javascript制作此示例。

您想要做的事情称为“多地点更新”。您可以阅读multi location updates here

const postKey = ref.push().key
const postObject = {
  title : "Hello",
  body: "Body here"
}
const updates = {
 `posts/${postKey}`:postObject,
 `users/${userId}/posts/${postKey}`: postObject
}
ref.update(updates)

答案 1 :(得分:0)

如果需要,您可以在向Firebase数据库添加数据时在两个不同的DatabaseReference上使用相同的对象。

usersRef.child(uid).child("posts").setValue(postObject);

postsRef.child(postId).setValue(postObject);

另一种方法是建立一个如下所示的数据库:

Firebase-root
   |
   ---- users
   |      |
   |      ---- uid1
   |            |
   |            ---- posts
   |                   |
   |                   ---- postId1: true
   |                   |
   |                   ---- postId2: true
   |
   ---- post
         |
         ---- postId1
         |      |
                ---- Post 1 Object
         |
         ---- postId2
                |
                ---- Post 2 Object

希望它有所帮助。