2016-12-04 9 views
0

私はバーテーブルを持っていて、そのバーのストレージイメージを使ってバーテーブルから1つのバーを削除したいとします。バーの名前を使ってバーを削除する。ファイアベースでのオブジェクトの削除

バーの名前は一意です - 新しいバーを追加する前にバーの名前を照会して、2つのバーの名前が同じでないことを確認します。

これは私の機能であり、どうしていますか?私はDBからバーオブジェクトを削除する際に問題があります。もちろん、私はこのようにして、バーのテーブル全体を削除しました。バーのautoIdのキーまたはIDを取得して削除できる方法はありますか?それを行う正しい方法は何ですか。

func deleteBar(name:String ,completion:@escaping (_ status:Bool, _ msg:String?)->()) 
{ 
    let ref = FIRDatabase.database().reference(fromURL: dbURL).child("bars").child(name) 
    storage = FIRStorage.storage() 

    // print(key) 

    let locationRef = FIRDatabase.database().reference(fromURL: dbURL).child("bar_locations") 
    //delete from bars 
    ref.parent?.removeValue() //This deleted the whole bars table 
    //delete from location 
    locationRef.child(name).removeValue() 

    let storageRef = storage?.reference(forURL: storageURL).child("bars").child(name).child("logo.jpg") 
    storageRef?.delete(completion: { (err) in 

     if err == nil { 

      completion(true, "Deleted") 

     } else { 
      //print(err?.localizedDescription ?? <#default value#>) 
      completion(false, err?.localizedDescription) 
     } 
    }) 

} 
+0

あなたはFirebaseデータベースの記憶データへの参照またはパスを格納することができます。また、[ファイルの削除](https://firebase.google.com/docs/storage/ios/delete-files)をチェックしてください – Jay

+0

@Jay私の問題は私のストレージ内のファイルを削除することではありません。問題は、バーテーブルのオブジェクトを削除することです。バーテーブルはバーのIDで構成され、すべてのIDはバーの名前のような属性を持っています。ポイントは、バーの名前を知りたいのです。 –

+0

問題は次の通りです。* firebase *内のオブジェクトを削除する*ので、firebase内のオブジェクトを削除すると仮定します。質問がテーブルからオブジェクトを削除する方法である場合(私はあなたがコード内のテーブルを持っていると仮定します)、質問を更新する必要があります。親ノード名を取得する方法を尋ねる場合は、[この質問]の回答を参照してください(http://stackoverflow.com/questions/40876616/how-to-check-for-value-in-firebase-that-is-自閉症の子どものために保有されているnoredirect = 1#comment68990882_40876616)。それは無関係の質問ですが、答えはあなたが使用したいかもしれないデザインパターンの例を示しています。 – Jay

答えて

関連する問題