Я пытаюсь синхронизировать данные между двумя устройствами, используя базу данных реального времени в Firebase.Когда я убираю ценность ребенка.Я не получаю событие наблюдателя (FIRDataEventTypeChildRemoved) для удаления дочернего элемента.
Древовидная структура:
userID
folders
folder_ID1 // to be deleted
folder_name:"Home"
folder_key:"folder_ID1"
folder_ID2
folder_name:"Home"
folder_key:"folder_ID2"
Теперь, когда я удаляю дочерний элемент из моего первого устройства для папки «folder_ID1», яполучить событие в FIRDataEventTypeChildChanged наблюдателе, но не в FIRDataEventTypeChildRemoved.Поэтому я не могу удалить папку на моем втором устройстве.
[ fdb_ observeEventType:FIRDataEventTypeChildChanged withBlock:^(FIRDataSnapshot* snapshot)
{
// Called with the key "folders" which has only "folder_ID2" after the remove value is called
}
[ fdb_ observeEventType:FIRDataEventTypeChildRemoved withBlock:^(FIRDataSnapshot* snapshot)
{
// Not called. But if I call removeValue for the child "folders" this observer is called.
}
Этот метод используется для удаления нужного дочернего идентификатора
[[[[[[ FIRDatabase database ] reference ]
child:currentUser_.uid ]
child:@"folders" ]
child:@"folder_ID1" ] removeValueWithCompletionBlock:^(NSError * _Nullable error, FIRDatabaseReference * _Nonnull ref) {
NSLog( @"Error %@", error );
}];
Вызвана функция удалениябез ошибок.Но я не получаю событие на втором устройстве.Поэтому я не могу удалить папку на моем втором устройстве.Также при удалении child_key вызывает событие для Изменено с помощью snapshot.key «папки».У которого есть только данные папки (folder_ID2) с ним
Если я могу получить ключ, который я удалил в удаленном обозревателе, я могу удалить папку с ключом во втором устройстве.