gpt4 book ai didi

swift - 查询嵌套数据如何工作?我还能检索下一级的数据吗?

转载 作者:行者123 更新时间:2023-11-30 10:34:30 25 4
gpt4 key购买 nike

我想查询下两级的数据,但是我仍然能够从其原始节点检索数据吗?

为了更好地解释,我的 Firebase 数据库如下所示:

posts
-192u3jdj0j9sj0
-message: haha this is funny (CAN I STILL GET THIS DATA)
-genre: comedy (CAN I STILL GET THIS DATA)
-author
-user: "jasonj"
-comment
-ajiwj2319j0jsf9d0jf
-comment: "lol"
-user: "David" (QUERY HERE****)
-jfaiwjfoj1ijifjojif
-comment: "so funny"
-user: "Toddy"

我本质上想查询大卫发布的所有评论。但是,根据查询的工作原理,我仍然可以获取来自“level 1”的原始内容(消息和类型)吗?或者我必须重组我的数据吗?可能会在评论下重写 1 级数据。

(最终目标:类似于雅虎答案,用户可以在其中看到他发布的问题以及他发布评论的问题)

下面的代码可以工作,但我不确定如何提取 1 级数据或者是否可能

   ref = Database.database().reference().child("posts").child(myPost).child("comment")
var queryRef:DatabaseQuery
queryRef = ref.queryOrdered(byChild: "user").queryEqual(toValue: "David")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.childrenCount > 0 {

最佳答案

您当前的数据结构可以轻松查找特定帖子的评论。然而,它并不容易找到特定作者的评论。原因是 Firebase 数据库查询将您的内容视为平面节点列表。您要过滤的值必须位于每个节点下的固定路径。

为了允许查找特定作者的评论,您需要添加一个额外的节点来保存该信息。例如:

"authorComments": {
"David": {
"-192u3jdj0j9sj0_-ajiwj2319j0jsf9d0jf": true
},
"Toddy": {
"-192u3jdj0j9sj0_-jfaiwjfoj1ijifjojif": true
}
}

这种结构通常称为反向索引,它可以让您轻松找到特定用户的评论路径(我使用 _ 作为上面路径段的分隔符)。

在使用 NoSQL 数据库时,这种数据重复非常常见,因为您经常需要修改/扩展数据结构以允许应用程序所需的用例。

另请参阅我的回答:

关于swift - 查询嵌套数据如何工作?我还能检索下一级的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58365976/

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