У меня возникли проблемы с удалением узлов в Firebase
Вот как я загружаю свои данные
BigBoy add = new BigBoy(addCate);
myRef.push().setValue(add);
Вот как я пытаюсь удалить свои данные
databaseReference = FirebaseDatabase.getInstance().getReference().child("message");
myRef = database.getReference("message");
String sfasf = Utils.object.getSfasf();
DatabaseReference remove = FirebaseDatabase.getInstance().getReference("message").child(sfasf);
remove.removeValue();
Но проблема в том, что узел не удаляется.
Сделайте свой вызов firebase следующим образом:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("message");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshots : dataSnapshot.getChildren()){
if (dataSnapshots.child("sfasf").exists()) {
dataSnapshots.child("sfasf").removeValue();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Проверка вопроса
Это все еще не работает, выдает ошибку. Попытка вызвать виртуальный метод java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' для ссылки на нулевой объект, вероятно, потому, что я не использую аутентификацию Firebase . Даже если я удалю этот узел, он все равно не будет удален.
База данных FirebaseDatabase = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("сообщение").child(); myRef.child(sfasf).removeValue()
Попробуйте это один раз и проверьте
Он по-прежнему не удаляет данные, я забыл что-то добавить в консоль Firebase?
Подождите некоторое время, проверьте еще раз
Если вы хотите удалить узел из id, вы можете использовать dataSnapshot.removeValue(); внутри условия if
Он говорит, что не может разрешить метод removeValue в dataSnapshot.child("sfasf").removeValue();, и выдает странную ошибку, говорящую о том, что вам нужна точка с запятой в операторе for, которую я не мог исправить
Попробуйте обновленную. Не волнуйтесь, мы заставим это работать
я жду вашего ответа
Мы сделаем это как можно скорее, просто побудьте некоторое время в stackoverflow.
Я все еще получаю сообщение об ошибке, которое не может разрешить removeValue в dataSnapshot.child("sfasf").removeValue();
Попробуйте это внутри, если условие -
dataSnapshot.removeValue();
Получите ту же ошибку, что и раньше, я думаю, что удаление значения больше не является методом для моментального снимка данных.
добавление datasnapshot.getRef().removevalue(); позволяет использовать removevalue, но удаляет все значения из моей базы данных
Поскольку ваш getRef является узлом сообщения
Это все еще не работает, у вас есть какие-либо другие советы?
1) У вас есть эталонный объект, но вы его не используете. Вы создали 2 ссылки на переменные и не используете их.
2) Ваш код неверен, для того, чтобы удалить узел, вы должны указать ключ
myRef = database.getReference("message");
myRef.child(key).remove();
---редактировать---
попробуй это
myRef.child(key).removeValue();
---редактировать---
Из официальной документации:
The simplest way to delete data is to call removeValue() on a reference to the location of that data. You can also delete by specifying null as the value for another write operation such as setValue() or updateChildren(). You can use this technique with updateChildren() to delete multiple children in a single API call.
Не удаляет данные
Проблема заключалась в том, что я не ссылался на pushID, когда ссылался на конкретный узел данных. Это было решено путем сохранения ключа при загрузке данных.
Все равно не удаляет данные