Слушатель onComplete
срабатывает, когда заданное вами состояние достигнуто на сервере. Невозможно изменить это поведение слушателя onComplete
.
Если вы хотите убедиться, что только один пользователь может удалить значение, и что вы знаете, что это текущий пользователь, вам следует использовать транзакцию . С помощью транзакции вы определяете новое значение узла на основе его текущего значения.
ROOT_REF.child("111").runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Object value = mutableData.getValue();
if (value == null) {
// Node doesn't exist
return Transaction.success(mutableData);
}
// Remove value and report transaction success
mutableData.setValue(null);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b,
DataSnapshot dataSnapshot) {
// Transaction completed
Log.d(TAG, "postTransaction:onComplete:" + databaseError);
}
});
Обратите внимание, что: