2016-09-26 2 views
0

Я пытаюсь удалить некоторое значение, хранящееся на конкретной ссылке в Firebase. Вот как я сохранил его:Значение, которое не удаляется из Firebase

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).setValue(MainActivity.uid); 

Вот как я пытаюсь удалить его:

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).child(MainActivity.uid).removeValue(); 

itemIDFU сгенерирован в onCreate() с помощью этого кода:

itemIDFU = mDatabase.child("users").child(uid).push().getKey(); 

Проблема заключается в том, что он успешно сохраняется, но не удаляется. Что здесь происходит? Пожалуйста, дайте мне знать.

+0

Пожалуйста, вставьте Firebase json, который вы получили. –

+0

@AndresVasquezAgramont, пожалуйста, расскажите мне более четко, что я должен делать? Благодарю. –

+0

@HammadNasir Если вы можете, перейдите на консоль базы данных, где будут показаны ваши данные. В правом верхнем углу вы увидите три точки. Нажмите на нее и выберите «Экспорт JSON». Затем сделайте снимок экрана области данных, с которой мы работаем. Таким образом, мы можем видеть, является ли формат JSON проблемой (это обычная проблема при работе с Firebase). – Ryan

ответ

1

Похоже, когда вы установите значение, вы установите ключ itemIDFU равным независимо от значения в MainActivity.uid

Однако при удалении данных, вы пытаетесь получить ребенка из itemIDFU , которого нет.

Вы не добавили MainActivity.uid как ребенка из itemIDFU, вы добавили его в качестве значения .

У вас есть два возможных решения:

Попробуйте это, если вы хотите, чтобы удалить значение, но оставить ключ itemIDFU там пусто:

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).setValue(null); 

Попробуйте это, если вы хотите, чтобы полностью удалить ключ и значение:

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).removeValue(); 

Вот фотография, чтобы помочь проиллюстрировать данные и проблема:

enter image description here

еще одна картина, чтобы объяснить

enter image description here

+1

вы правы ... это то, что происходит ... –

+0

@HammadNasir Хорошо, я рад, что он работает! Firebase - такой полезный API. Мой личный фаворит! – Ryan

+1

@HammadNasir Просто добавит к объяснению проблемы. Bro, когда вы устанавливаете значение для ребенка. ** Это нельзя назвать ребенком **. Помните, что firebase сохраняет данные в виде пар ключ-значение. Поэтому каждый ребенок становится ** ключом **, а значение становится ** vaue для этого ключа **. Просто запомните это, и вы избежите таких ошибок позже. –

1

Вы можете удалить значения в этих двух направлениях:

// Первый способ удалить значение

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).setValue(null); 

// или попробовать это

mDatabase.child("users").child(uid).child("followersUID").child(itemIDFU).removeValue(); 

Я чувствую, что значение не получает удалены, как вы добавляете .removeValue() на значении ребенка, а не самого ребенка.

+0

Он действительно не вызывает removeValue() для любого значения вообще, так как значение, которое он пытается вызвать, принадлежит дочернему, который не существует. Ребенок «MainActivity.uid» не существует и как таковой не имеет значения. Но тем не менее, ваше решение (то же самое, что и мое) решает проблему. – Ryan

+0

это не работает, и поэтому ответ @Ryan. –

+0

@ Хаммад Насир, вы говорите, что ни один ответ не работает? – Ryan