【问题标题】:How to delete an object with multiple children in Firebase?如何在 Firebase 中删除具有多个子对象的对象?
【发布时间】:2026-02-24 17:10:02
【问题描述】:

我正在尝试删除我的 Firebase 数据库中具有多个子项的对象。我的数据是这样设置的:

我在我的 iOS 应用中运行以下代码:

[[ref child:[NSString stringWithFormat:@"/playlistSongs/%@", playlistObject[@"firebaseID"], nil]] removeValueWithCompletionBlock:^(NSError * _Nullable error, FIRDatabaseReference * _Nonnull ref) {
                        if (error) {
                            NSLog(@"ERROR: %@", error.localizedDescription);
                        } else {
                            NSLog(@"DELETED!");
                        }
                    }];

当此代码运行时,已删除!在日志中输出。但是,该对象仍保留在我的 firebase 数据库中。是否可以删除具有多个孩子的对象?查看文档here,它表明我应该能够这样做。如果有人能指出我正确的方向,那就太好了。

【问题讨论】:

  • playlistObject[@"firebaseID"] 的值是多少?还有你为什么用,nil
  • playlistObject[@"firebaseID"] 等于 -KK4kr7tBDN-2whVrjbJ。我曾经确保我删除了正确的孩子集合。
  • 删除父节点,也会删除所有子节点。所以肯定有其他问题。但是从 sn-p 很难说那可能是什么。调用FIRDatabase.setLoggingEnabled() 并检查显示的内容可能值得启用调试日志记录。
  • [FIRDatabase setLoggingEnabled:YES] 为我整理好了。我正在重用ref,因此我的新路径附加到旧路径。

标签: ios objective-c firebase firebase-realtime-database


【解决方案1】:

有时越简单越好:

Firebase *ref = path to the parent node
[ref setValue: nil];

【讨论】:

  • 这是为了从表格视图中删除单行聊天?
  • @DishantRajput 这是一种从 Firebase 中删除或删除行的技术。最初的问题是如何在 Firebase 中删除具有多个子节点的对象? 将父节点设置为 nil 而不是删除所有子节点。
【解决方案2】:

删除价值函数对我有用

[[[_ref child:@"playlistSongs"] child:snapshot.key] removeValue];

【讨论】:

    【解决方案3】:

    如果你站在 "playlistSongs" 并使用 nil 参数调用 updateChildValues 应该会更好。

    【讨论】:

    • 我该怎么做呢?我认为 updateChildValues 是非零
    • 这没什么区别:删除父节点将删除所有子节点。同样删除所有子节点也会删除父节点。肯定有其他问题。