【问题标题】:Best way to model friend relationships for querying a user's friends with firestore使用 Firestore 查询用户好友的好友关系建模的最佳方式
【发布时间】:2019-09-28 21:08:25
【问题描述】:

我想在使用 firestore 的一次查询中查询用户 (user1) 与其为朋友的所有用户。

目前,我在每个用户对象中都有一个“朋友”字段,因此为了获取与 user1 成为朋友的用户,我调用:

friendsOfUser1 = db.collection('users').where('friends', 'array-contains', user1).stream()。

这在用户只有

有没有办法将朋友数组存储在用户文档之外,同时仍然能够在一次查询中查询用户的朋友?这就是现在的结构:

用户1: {朋友:[“user2”,“user3”,“user7”,“user9”], 名称:“John Sci”}

用户2: {朋友:[“user1”,“user4”,“user8”,“user12”], 名称:“埃尔莫广场”}

用户3: {朋友:["user1", "user7", "user9"]}

所以 db.collection('users').where('friends', 'array-contains', user1).stream() 将给出 [user2, user3]。

【问题讨论】:

  • 请在发帖前查看编辑框下方帖子的格式化版本。阅读代码和引用的内联和块格式的编辑帮助。

标签: firebase database-design nosql google-cloud-firestore


【解决方案1】:

在数组中存储字符串的可扩展替代方法是将相同的字符串存储在单独的文档中,通常作为主文档的子集合。

/users
    /{uid}
        /friends
            /{friendId1}
            /{friendId2}
            /{friendId3}

为了确定 user1 是否有 user2 作为好友,您只需使用两个用户的 ID 获取文档:/users/user1/friends/user2。如果文档存在,则存在关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多