首页 > 解决方案 > iOS Firebase - 如何从不同节点删除具有相同密钥的子节点

问题描述

我有一个名为以下的参考。在该 ref 下,有 2 个不同的 userId 关注同一个用户。如果他们都关注的用户想要删除他们的帐户,我想从关注节点中删除他们。多位置更新似乎不正确来实现这一点。

怎么做到呢?

在此处输入图像描述

用户 kk8qFOIw... 是正在删除其帐户的用户。一旦删除,他们的密钥应该从其他用户的节点中删除。

标签: iosswiftfirebasefirebase-realtime-database

解决方案


这是你可以做到的:

首先获取 id = 1 的所有节点,然后运行多路径更新并将它们设置为空。

 let userId = "yourUserId"
    self.ref.child("following").queryOrdered(byChild: userId).queryEqual(toValue: 1).observeSingleEvent(of: .value) { (snasphot) in
        guard let value = snasphot.value as? [String : Any] else {return}


        var multipathUpdate = [String:Any]()
        value.keys.forEach({ (key) in
            multipathUpdate["following/"+key+"/"+userId] = [:]
        })
        self.ref.updateChildValues(multipathUpdate, withCompletionBlock: { (err, ref) in

        })
    }

推荐阅读