我正在使用带有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将降低内存使用量.