ios - Firebase 数据库不等于请求 - 替代解决方案(适用于 iOS)

标签 ios database firebase datasource

我正在使用具有 Json 结构的 Firebase 数据库来管理用户的评论。

 {
    "post-comments" : {
            "post-id-1" : {
              "comment-id-11" : {
                "author" : "user1",
                "text" : "Hello world",
                "uid" : "user-id-2"
              },....
 }

我想提取所有评论,但不包括当前用户的评论。

在 SQL 中,这将被翻译成: 从 id !="user-id-2"

的帖子评论中选择 *

我了解 Firebase 数据库不提供根据值(即:用户 ID != ...)的存在来排除节点的方法。

因此是否有任何替代解决方案来解决这个问题。通过更改数据库结构,或者在加载数据后处理数据源。

对于后者,我使用的是 FirebaseTableViewDataSource。有没有办法在查询后过滤数据?

非常感谢

最佳答案

第一个方案是通过.ChildAdded加载评论,忽略当前user_id的评论

let commentsRef = self.myRootRef.childByAppendingPath("comments")

commentsRef.observeEventType(.ChildAdded, withBlock: { snapshot in

  let uid = snapshot.value["uid"] as! String
  if uid != current_uid {
    //do stuff
  }            
})

您可以对此进行扩展并通过 .Value 加载所有内容,并在代码中迭代子项。该方法将取决于您加载的节点数量 - .ChildAdded 将降低内存使用量。

关于ios - Firebase 数据库不等于请求 - 替代解决方案(适用于 iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752402/

相关文章:

javascript - 如何在 html 上以列表形式显示 firebase 查询结果?

ios - 在 Xcode 10 中添加自定义 UITableViewController header

ios - 如何在不破坏 MVVM 模式的情况下处理 Alamofire 的结果

ios - 无法更改 UICollectionview 中的 View 颜色

mysql - 将创建时间,修改时间列添加到mysql中的现有表

angular - 需要取消订阅 Firestore/Angularfire2 订阅

ios - collectionView 中的自动单元格移动

mysql日期范围,较大日期在较小日期之前

database - 如何使用 VBA 列出或枚举 MS Access 宏下的所有查询名称

ios - 如何从 Firebase Firestore 将静态 UITableView header 加载到我的应用程序中?