我在使用firebase中的其他辅助字符串数组中删除子字符串时遇到问题。当用户创建群聊时,他们包括共享者。这些共享者被添加到一个字符串数组中,然后在制作时添加到firebase。现在,当用户单击离开组聊天按钮时,我无法找到从该阵列中删除当前用户的用户ID的方法,其中我已经检查过他们的uid是否在数组中。我已经尝试了所有我能做的事情,首先我尝试了ref.child(“群聊”).child(groupKey).child(“sharers”)。child(myriad).removeValue,但是没有用,我也试过创建一个没有当前用户ID的新数组,删除旧数组并将新数组添加到firebase,所有都没有用,现在我转向一些同伴编写。如何从firebase中的一组uid中删除当前用户所做的操作。
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()
})
谢谢!
答案 0 :(得分:2)
与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);
});
答案 2 :(得分:0)
一种方法是通过设置为nil来删除整个节点,就像我在评论中说的那样,然后将节点设置回父节点。请查看这篇文章以及firebase数组。