在我的 Firebase 数据库中,我有一个与此类似的数据结构:
帖子 ID (1a3b3c4d5e) 由 ChildByAutoId()
函数生成。
用户 ID (fn394nf9u3) 是用户的 UID。
在我的应用程序中,我有一个 UILabel(作者),我想用创建帖子的用户的“全名”来更新它。
由于我在数据库的用户部分引用了帖子 ID,因此我假设必须有一些代码(if 语句?)来检查该值是否存在,如果存在,则更新标签。
你能帮忙吗?
最佳答案
虽然可以执行查询 (ref.child("Users").queryOrdered(byChild: "Posts/1a3b3c4d5e").queryEqual(toValue:true)
),但您需要对每个特定用户的帖子建立一个索引,以允许该查询高效运行。这不是一个可行的策略。
与使用 NoSQL 数据库时一样:如果您需要执行当前数据模型不允许的操作,请更改数据模型以允许该用例。
在这种情况下,可以将用户的 UID 添加到每个帖子,或者将用户名添加到每个帖子(如 Andre 建议)并确定 if/how you deal with user name changes .
在 Firebase 和 Firestore 等 NoSQL 数据库中,在两个方向上拥有此类关系数据以允许在两个方向上进行高效查找是很常见的。事实上我单独写了一个answer about dealing with many-to-many relations .
关于json - Firebase 数据库 : how to compare two values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49257088/