Actualice Firebase multi-location con error: Path es un ancestro de Path. Rápido
Cuando intento actualizar la base de datos en varias ubicaciones usando.updateChildValues
, Aparece el error que se detalla a continuación. ¿Como puedó resolver esté problema?
Finalización de la aplicación debido a la excepción no detectada 'InvalidFirebaseData', razón: '(updateChildValues :) Ruta no válida en el objeto. La ruta (/ Payments / osGRNIZzbRWtllehAXbGJ5NtmRe2 / 1513178895/730890027) es un ancestro de (/ Payments / osGRNIZzbRWtllehAXbGJ5NtmRe2 / 1513178895/730890027 / reservas). '
let timeStamp = String(Int(Date().timeIntervalSince1970))
let paymentRef = self.random9DigitString()
var finalBookingArray = [String: AnyObject]()
for booking in self.bookingsFromQuery {
let bookingForPayPeriod = DisbursePaymentData(
numberOfHours: booking.NumberOfHours,
bookingAmount: booking.BookingAmount,
amountPaidToCleanerForBooking: booking.AmountPaidToCleanerForBooking ?? "",
checkInDate: booking.checkInDate ?? "",
checkOutDate: booking.checkOutDate ?? "",
checkInTimeStamp: booking.checkInTimeStamp ?? "",
checkOutTimeStamp: booking.checkOutTimeStamp ?? "",
ratePriceClient: booking.RatePriceClient ?? "",
rateNumberClient: booking.RateNumberClient ?? "",
ratePriceCleaner: booking.RatePriceCleaner ?? "",
rateNumberCleaner: booking.RateNumberCleaner ?? "",
cancelledBy: booking.objectsUnderCancelledBy)
let bookingCompleted = bookingForPayPeriod.convertDisbursePaymentDataToAnyObject()
finalBookingArray[booking.BookingNumber] = bookingCompleted
}
let finalObject = DisbursePaymentData(
payPeriodDateStartDate: self.fromDateString.text!,
payPeriodEndDate: self.toDateString.text!,
payPeriodTimeStampStartDate: String(describing: self.startDateTimeStamp),
payPeriodTimeStampEndDate: String(describing: self.endDateTimeStamp),
paymentRef: paymentRef)
let objectComplete = finalObject.toAnyObj()
let childUpdates = ["Payments/\(uid)/\(timeStamp)/\(paymentRef)" : objectComplete,
"Payments/\(uid)/\(timeStamp)/\(paymentRef)/\("bookings")" : finalBookingArray
] as [String : Any]
self.dbRef.updateChildValues(childUpdates)
esquema:
Payments
-timeStamp
-paymentRef
payPeriodDateStartDate: date1
payPeriodEndDate: - date 2
payPeriodTimeStampStartDate: tstamp1
payPeriodTimeStampEndDate: tstamp2
paymentRef: generate9DIgits
Total:
allfees:
netPay:
//---->>the key:value pairs above represent objectComplete that I set above
- bookings // -> this is finalBookingArray that I set above
booking1
- hours:
- originalPriceOfBooking
- amountPaidToCleanerForBooking
-ratePriceClientContent
-rateNumberClientContent
-ratePriceCleanerContent
-rateNumberCleanerContent
-checkInDate:
-checkOutDate:
-checkInTimeStamp:
-checkOutTimeStamp:
-cancelledBy
-timeStamp
values under timeStamp
booking2