Firebase получить ключ для последнего вставленного элемента - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть ссылка на базу данных.

houseReference = FirebaseDatabase.getInstance().getReference("House");

Я добавляю элемент в базу данных, используя:

houseReference.push().setValue(house);  

Справочная документация Google firebase говорит , вы можете затемполучить ключ для последнего элемента, используя

houseReference.getKey();

Однако, это возвращает House.Что я делаю не так?

1 Ответ

0 голосов
/ 02 декабря 2018

Firebase не имеет понятия «последний ключ».Но каждый DatabaseReference является ссылкой на путь в базе данных, и вы получаете последний ключ в этом пути, вызывая getKey() для него.Поэтому, если вы позвоните houseReference.getKey(), вы действительно получите house, поскольку это последний ключ в пути, на который он ссылается.

Теперь мы перейдем к хорошему материалу.

КогдаВы вызываете push() Firebase генерирует (в клиенте) новый уникальный ключ и возвращает новый DatabaseReference, который указывает на этот ключ по текущему пути.Таким образом, houseReference.push() возвращает новый DatabaseReference в новое уникальное дочернее местоположение.А это значит, что вы можете позвонить getKey() на этом новом DatabaseReference, чтобы получить последний ключ этого нового местоположения.

Итак:

DatabaseReference newRef = houseReference.push();
System.out.println(newRef.getKey());
newRef.setValue(house);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...