document("user1") document("user-6ren">
gpt4 book ai didi

firebase - Firestore 数据复制

转载 作者:行者123 更新时间:2023-12-04 17:46:38 25 4
gpt4 key购买 nike

我正在尝试在 Firestore 中设置好友系统。我的数据模型目前看起来像这样:

collection("users") -> 
document("user1")
document("user2")
...

users 集合中的文档包含用户的 nameemail...等数据。我现在想让用户拥有 friend ,但我不确定对此建模的最佳方式。
所以,我肯定会在用户的文档中添加一个 friends 字段,但是这个字段应该包含什么?我的第一个想法是指向一个名为 friends 的新集合的指针,其中的文档是用户。像这样:

collection("users") { 
document("user1") {
name:user1,
friends: -> collection("friends") {
document("user2"),
...
}
}
}

这似乎是合理的,但这意味着我的数据库中会有很多重复数据,因为每个有 friend 的用户都将在 friends 集合中重复。我应该担心这个吗?或者这在 Firestore 数据库结构中是否正常?
是否可以从 friends 集合指向 users 集合中的文档?像这样的东西:

collection("users") { 
document("user1") {
name:user1,
friends: -> collection("friends") {
document, -----
... |
} |
}, |
document("user2")<-
}

或者我应该放弃为 friend 使用集合的想法,只保留一个包含用户所有 friend 的 uid 的列表吗?

最佳答案

似乎您正在为 usersfriends 使用两个单独的集合,首先您可以通过一个集合来完成。但我不想去那里可能还有另一种情况。作为您的单独收集方式,您可以设计您的 friends 收集模型以满足无重复:


{
名称:'名称',
电子邮件:'email@mail.com'
has_connected : {
'user1' : true//在这里你可以使用来自用户的任何其他唯一键
}
}
问题是 firestore 推荐这种类型的查询设计,为了获得更快的性能,您可以将 has_connected 键作为索引。

在这种方法中,您必须在通过电子邮件或任何其他唯一 key 添加新 friend 时进行检查。如果存在,则只需将另一个 key 放入相应用户的 has_connected 中。例如 user2 : true

最后,要获取用户的所有好友,您必须执行如下查询:例如:在 javascript 中


让 ref = firebase.firestore().collection("friends");
引用
.where(`has_connected.${username}`, "==", true)
。得到()
.then(//做你的逻辑)
。捕获()

谢谢

关于firebase - Firestore 数据复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48214295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com