从 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 个元素并删除它,父元素也会被删除,但会在您下次添加另一个子元素时创建。