【发布时间】:2016-12-04 15:33:25
【问题描述】:
我有一个条形表,并想使用该条形的存储图像从中删除一个条形。我使用栏的名称来删除栏。
酒吧名称是唯一的 - 我在添加新酒吧之前查询酒吧的名称,以确保没有两个酒吧具有相同的名称。
这是我的职能以及我如何做到这一点。我在从数据库中删除 bar 对象时遇到问题。当然,当我这样做时,它会删除整个条形表。有没有办法让栏的 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)
}
})
}
【问题讨论】:
-
您可以在 Firebase 数据库中存储存储数据的引用或路径。另外,请查看Delete Files
-
@Jay 我的问题不在于删除存储中的文件。问题是删除我的条形表中的一个对象。酒吧表由酒吧的 id 组成,每个 id 都具有酒吧名称、酒吧类别等属性......关键是我想知道酒吧名称的 id 以便能够删除它。
-
问题是 Deleting an object in firebase 所以假设您要删除 firebase 中的对象。如果问题是如何从表中删除对象(我假设您在代码中有一个表?)您应该更新您的问题。如果您询问如何获取父节点名称,请参阅This Question 的答案。这是一个不相关的问题,但答案显示了您可能想要使用的设计模式示例。
-
@Jay 感谢您的链接。它有很大帮助。好像我完全忽略了每个节点(栏)的键,我只依赖于栏的名称。我可以说这是完全错误的。现在我完全取决于唯一键并使用它来命名我的位置节点以及每个栏的图像文件夹名称。我的删除功能也很实用。
标签: ios swift xcode firebase firebase-realtime-database