2016-12-04 69 views
0

我有一个酒吧台,并希望使用该栏的存储图片来自它删除单个酒吧。我使用酒吧的名字来删除酒吧。删除对象的火力

酒吧名称是独一无二的 - 我查询酒吧的名称之前添加一个新酒吧,以确保没有两个酒吧有相同的名称。

这是我的功能,我如何做到这一点。从数据库中删除栏对象时遇到问题。当然,当我这样做时,它删除了整个酒吧的表格。有没有办法让栏的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

可以存储参考或路径在火力地堡数据库的存储数据。此外,检查出[删除文件](https://firebase.google.com/docs/storage/ios/delete-files) – Jay

+0

@Jay我的问题是不是在我的存储删除文件。问题是删除我的酒吧表中的一个对象。酒吧表包含酒吧的ID,每个ID都有酒吧名称,酒吧类别等属性......重点是我想知道酒吧名称的ID以便能够删除它。 –

+0

问题说成*在火力删除对象*,所以它假设您想删除火力的对象。如果问题是如何从一个表中删除的对象(我假设你在代码中的表?),你应该更新你的问题。如果你问如何得到父节点名,一看便知[本问题](http://stackoverflow.com/questions/40876616/how-to-check-for-value-in-firebase-that-is-下一个 - 自动识别孩子持有?noredirect = 1个#comment68990882_40876616)。这是一个无关的问题,但答案显示了您可能想要使用的设计模式的一个示例。 – Jay

回答