从 Firebase 数据库中删除 - Swift
Remove from Firebase Database - Swift
这是我的 Firebase 数据库的样子:FireBase Database
此数据来自以下代码:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
SVProgressHUD.show(withStatus: "Fetching your location")
dismissUIElements(value: false)
let location = locations[locations.count - 1]
if location.horizontalAccuracy > 0 {
self.locationManager.stopUpdatingLocation()
let userLatitude = location.coordinate.latitude
let userLongitude = location.coordinate.longitude
saveCurrentLocation(long: userLongitude, lat: userLatitude)
}
}
func saveCurrentLocation(long: Double, lat: Double){
let geofireRef = FIRDatabase.database().reference().child("Locations")
let geoFire = GeoFire(firebaseRef: geofireRef)
let userID = FIRAuth.auth()?.currentUser?.uid
geoFire.setLocation(CLLocation(latitude: lat, longitude: long), forKey: userID!) { (error) in
if (error != nil) {
print("An error occured: \(String(describing: error))")
self.dismissUIElements(value: true)
} else {
print("Saved location successfully!")
self.dismissUIElements(value: true)
SVProgressHUD.dismiss()
}
}
}
在另一个视图控制器中,我只想删除用户的位置,而不是名为 "Locations" 的完整 child。代码,
func deleteUserLocation(){
FIRDatabase.database().reference().child("Locations").child(userID!).removeValue()
}
这将删除名为 "Locations" 的整个 'folder',而不是特定的 child。
如何只删除以用户uid命名的child?
您的代码似乎没问题,但在 Firebase 中您不能有空容器(字典或数组)。
因此,如果您只有 1 个元素并删除它,父元素也会被删除,但会在您下次添加另一个子元素时创建。
这是我的 Firebase 数据库的样子:FireBase Database
此数据来自以下代码:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
SVProgressHUD.show(withStatus: "Fetching your location")
dismissUIElements(value: false)
let location = locations[locations.count - 1]
if location.horizontalAccuracy > 0 {
self.locationManager.stopUpdatingLocation()
let userLatitude = location.coordinate.latitude
let userLongitude = location.coordinate.longitude
saveCurrentLocation(long: userLongitude, lat: userLatitude)
}
}
func saveCurrentLocation(long: Double, lat: Double){
let geofireRef = FIRDatabase.database().reference().child("Locations")
let geoFire = GeoFire(firebaseRef: geofireRef)
let userID = FIRAuth.auth()?.currentUser?.uid
geoFire.setLocation(CLLocation(latitude: lat, longitude: long), forKey: userID!) { (error) in
if (error != nil) {
print("An error occured: \(String(describing: error))")
self.dismissUIElements(value: true)
} else {
print("Saved location successfully!")
self.dismissUIElements(value: true)
SVProgressHUD.dismiss()
}
}
}
在另一个视图控制器中,我只想删除用户的位置,而不是名为 "Locations" 的完整 child。代码,
func deleteUserLocation(){
FIRDatabase.database().reference().child("Locations").child(userID!).removeValue()
}
这将删除名为 "Locations" 的整个 'folder',而不是特定的 child。
如何只删除以用户uid命名的child?
您的代码似乎没问题,但在 Firebase 中您不能有空容器(字典或数组)。
因此,如果您只有 1 个元素并删除它,父元素也会被删除,但会在您下次添加另一个子元素时创建。