Я не могу понять, почему это происходит!
Я пытаюсь добавить прослушиватель, чтобы определить, когда "новые" данные были добавлены в базу данных.Проблема состоит в том, что, как только я добавляю слушателя, метод onChildAdded
начинает запускать все существующие узлы, содержащиеся в данном пути, как если бы они были только что добавлены (но они, очевидно, уже были там).
Что еще более странно, так это то, что проблема возникает только с набором уже существующих узлов.Я попытался скопировать содержимое проблемных узлов в новый узел, но новый узел, похоже, не имеет этой проблемы.Я буквально экспортировал JSON неисправных узлов и импортировал в новый узел, но новый работает нормально.
Я добавляю ChildEventListener
примерно так
FirebaseDatabase.getInstance().getReference("roles/roleAdmin").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
// This should be fired only if new data is added to the
// database under the path roles/roleAdmin,
// but instead, as soon as the program runs the line to add the
// ChildEventListener (above), this event starts firing for each
// one of the already existing nodes under roles/roleAdmin
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
Данные в узле roles
выглядят следующим образом
role: {
roleAdmin: {
name: "Admin"
}
}
Это непосредственно под корневым уровнем между прочим.Под этим узлом было больше данных, но я заметил, что такая же проблема возникает даже с этими небольшими данными.
Как я уже говорил, это, кажется, происходит с некоторыми из уже существующих узлов.Когда я пытаюсь создать новый узел на том же уровне и дать ему тот же самый контент, чтобы увидеть, будет ли он иметь тот же эффект, новый узел работает нормально.
Я не думаю, что это ожидаемое поведение,Я что-то упускаю?