Firebase正确逻辑

时间:2018-11-28 20:07:13

标签: firebase

想知道这里是否有正确的心态...在firebase(使用Vue)中,我有一个userscollection:

users : {
    uid: "09A09IQMSLDK0912",
    name: "Gerard",
    email: "gerard@mail.com"
}

如果我希望用户添加朋友,是否应该将其添加到用户集合?

users : {
    uid: "09A09IQMSLDK0912",
    name: "Gerard",
    email: "gerard@mail.com",
    friends: []
}

...还是我应该开始新的收藏(例如,friendscollection)?

friends: {
    {
        userId : 09A09IQMSLDK0912,
        friendId: 09A09IQMSLDAEAQS
    }
 }

谢谢您的建议!

2 个答案:

答案 0 :(得分:1)

您将需要将其添加为新集合。您不应该为任何集合建模以使其具有可以包含无数项目的array属性,否则,您将遇到大规模问题。

相反,您应该创建另一个集合,并使它们通过您提到的ID关联。

我不是Firebase数据库的专家,但我知道它的功能与MongoDB非常相似。例如,假设数据库是MongoDB。收集项目的大小有一个限制(BSON限制:https://docs.mongodb.com/manual/reference/limits/),如果您允许收集项目具有无限期增长的数组属性,您将很快达到此限制,并且您将无法将项目插入集合。

答案 1 :(得分:0)

您将希望以与以下类似的结构将每个用户的朋友存储在Firebase数据库中:

   friends: {
        userId1: {
            friend1UserId: 123123123121 // timestamp of when the users became friends, or whatever value is useful to your application.
            friend2UserId: 123123123123 
            friend3UserId: 213123123123
        }
        userId2: {
            friend1UserId: 412124124124
            friend2UserId: 213123213321
        }
   }

这是因为Firebase的查询非常有限-通常在NoSQL数据库中,您希望将数据保持在而不是更深<< / strong>。