2016-06-12 51 views
0

我想在我的Firebase數據庫中刪除一個包含多個子項的對象。我的數據是建立像這樣:如何刪除Firebase中有多個子項的對象?

Attempting to delete, -KK4kr7tBDN-2whVrjbJ

我在我的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,這表明我應該能夠這樣做。如果有人能指引我走向正確的方向,那將會很棒。

+0

工作,這是什麼'playlistObject [@ 「firebaseID」]'的價值?你爲什麼要用',nil'? – Shubhank

+0

playlistObject [@「firebaseID」]等於-KK4kr7tBDN-2whVrjbJ。我曾經確定我正在刪除正確的兒童收藏。 – Josh

+0

刪除父節點,也會刪除所有的孩子。所以一定有其他的事情出錯了。但從片段中很難說出可能的結果。通過調用['FIRDatabase.setLoggingEnabled()'](https://firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_database.html#method-detail)並檢查顯示內容,可能值得啓用調試日誌記錄。 –

回答

0

如果您站在「playlistSongs」並用nil參數調用updateChildValues,那應該會更好。

+0

我該如何去做這件事?我認爲updateChildValues是nonnil – Josh

+0

這沒有什麼區別:刪除一個父節點將刪除所有的孩子。同樣刪除所有的孩子也會刪除父節點。還有其他一些事情一定會出錯。 –

3

有時候越簡單越好:

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

這是爲了從表視圖中刪除單行聊天嗎? –

+0

@DishantRajput這是從Firebase中刪除或刪除一行的技術。原始問題是*如何在Firebase中刪除一個包含多個子項的對象?*不是刪除所有的子項,而是將父節點設置爲零來做同樣的事情。 – Jay

1

刪除值函數是我

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