2017-08-29 62 views
0

我在从firebase中的其他辅助字符串数组中删除孩子字符串时遇到问题。当用户创建群聊时,他们包括共享者。这些共享者被添加到字符串数组中,然后在制作时添加到firebase中。现在,当用户点击离开组聊天按钮时,我无法找到一种方法从数组中删除当前用户的用户标识,其中我已经检查过他们的用户标识是否在数组中。我尝试了所有我能做的,首先我尝试了ref.child(“Group Chats”)。child(groupKey).child(“sharers”)。child(myriad).removeValue,并且没有工作,我也尝试创建一个没有当前用户ID的新数组,删除旧数组并将新数组添加到firebase,都不起作用,现在我转向一些同行编码器。我如何从firebase中的一组uid中删除当前用户。如何从firebase中的数组中删除字符串值

 let action = UIAlertAction(title: "Leave Group Chat", style: .default, handler: {(alert : UIAlertAction) -> Void in 
       let ref = FIRDatabase.database().reference() 
        if let keyp = self.groupChats[indexPath.row].key { 

         ref.child("Group Chats").child(keyp).child("sharers").child(uip).removeValue() 



               } 
        self.groupChat.removeAll() 
        self.pull() 
        self.pullFromSharers() 
        self.tableViewManage.reloadData() 

       }) 

Firebase

谢谢!

+0

而不是removeValue转到您想要删除的适当的索引并尝试setValue(nil) –

+0

我会试试,谢谢 –

+0

让我知道它是否有效,我可以添加它作为答案。 –

回答

1

与OP讨论后,我们已经找到了解决办法

问题是,你的路径计算不正确,你的路径是所获得的价值,而不是孩子,所以修改代码如下:

ref.child("Group Chats").child(keyp).child("sharers").observe(.value, with: { snapshot in 
    if let sharers = snapshot.value as? [String] { 
    for i in 0..<sharers.count { 
    if sharers[i] == uip { 
     ref.child("Group Chats").child(keyp).child("sharers").child("\(i)").removeValue() 
    } 
    } 
    } 

    }) 
+1

完美的再次感谢男人 –

0

我在angularjs中使用了这个简单的方法。我认为你也需要同样的东西。试试这会帮助你。

var url = "your db path is here" 
var dataObj = {'sharers':''}; 
    ref(url).set(dataObj).then(function(res) { 
     console.log("response:- ",res); 
    });