【问题标题】:How do you remove a key that has a space in it? (swift)如何删除其中有空格的键? (迅速)
【发布时间】:2019-02-05 20:04:18
【问题描述】:

我在 firebase 中存储了一些东西,并且密钥包含一个空格。例如:“CS 1332”。我正在尝试删除它,但我认为空间存在问题。它正在将其转换为 %20,这可能不是 firebase 表示空间的方式。

let ref = REF_USERS.child(uid).child("classes").child("CS 1332")

ref.removeValue()

【问题讨论】:

  • 我在您共享的代码中没有看到任何应该导致空间被编码为%20 的内容。你是如何确定这是正在发生的事情?
  • 当我运行这一行时: print(ref.description()) 它会打印出来(我在评论中用点替换了部分内容):hu(.........)/classes/AS%202220

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

有一些在规则和集合中使用空格的例子。

虽然规则要求对路径进行“编码”,但 this answer 引导我从 Firebase 团队中找到 this documentation for best practices。您应该能够使用反引号对路径进行转义,以便在带有空格的路径上执行该类型的操作。

请尝试:

let ref = REF_USERS.child(uid).child("classes").child("`CS 1332`")

ref.removeValue()

【讨论】:

    【解决方案2】:

    Firebase 不允许您重命名密钥,但您可以只提取有问题的特定节点,然后使用新密钥将它们重新保存到数据库中,然后从旧节点中删除数据。删除旧密钥中的数据后,firebase 将自行清理空密钥。

    【讨论】:

    • 对不起,我不是很清楚。我正在尝试删除密钥,而不是空间。我想彻底删除键值对。
    • 我明白了。这个问题有很多实例,还是只有一个实例?您可以记录快照的内容并查看控制台中是否有任何异常字符?假设您想以编程方式删除它,您是否在 firebase 规则中授予了所需的权限?
    • 没有异常字符。这是我的权限: "rules": { ".read": true, ".write": true }
    猜你喜欢
    • 2015-04-18
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多