【问题标题】:How to remove string value from array in firebase如何从firebase中的数组中删除字符串值
【发布时间】:2018-02-06 09:09:28
【问题描述】:

我在从 firebase 中的其他辅助字符串数组中删除子字符串时遇到问题。当用户创建群聊时,他们包括共享者。这些共享者被添加到字符串数组中,然后在制作时添加到 firebase。现在,当用户单击离开群聊按钮时,我无法找到从该数组中删除当前用户的用户 ID 的方法,其中我已经检查了他们的 uid 是否在数组中。我已经尽我所能尝试了,首先我尝试了 ref.child("Group Chats").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()

                })

谢谢!

【问题讨论】:

  • 而不是 removeValue 转到您要删除的相应索引并尝试 setValue(nil)
  • 我会试试的,谢谢大佬
  • 让我知道它是否有效,我可以将其添加为答案。
  • 我试过了,什么也没发生,没有任何改变
  • 我试过 ref.child("Group Chats").child(key).child("sharers").child(did).setValue(nil)

标签: ios arrays swift firebase firebase-realtime-database


【解决方案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() 
    } 
    } 
    } 

    })

【讨论】:

  • 好吧,实际上是行不通的,因为键和索引之间存在差异
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    一种方法是通过设置为 nil 来删除整个节点,就像我在评论中所说的那样,然后将节点设置回父节点。请查看这篇关于 firebase 数组的帖子。

    https://stackoverflow.com/a/40657455/5123516

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多