У меня есть база данных firebase, которая загружается через Async, и я могу проверить, что все данные существуют в правильных узлах, но по какой-то причине я не могу понять, как вызвать данные, хранящиеся в конкретном узле.
Я пробовал .addChildEventListener и .addValueEventListener, но, похоже, ничто не позволяет загружать мой глобальный объект с деталями в конкретном узле.
Вот быстрый снимок json, на который похожекаждый узел.
{
"movies" : {
"297802" : {
"movieBackdrop" : "/5A2bMlLfJrAfX9bqAibOL2gCruF.jpg",
"movieFavorite" : 0,
"movieID" : 297802,
"movieLanguage" : "en",
"movieOverview" : "Once home to the most advanced civilization on Earth, the city of Atlantis is now an underwater kingdom ruled by the power-hungry King Orm. With a vast army at his disposal, Orm plans to conquer the remaining oceanic people -- and then the surface world. Standing in his way is Aquaman, Orm's half-human, half-Atlantean brother and true heir to the throne. With help from royal counselor Vulko, Aquaman must retrieve the legendary Trident of Atlan and embrace his destiny as protector of the deep.",
"moviePopularity" : 116,
"moviePosterPath" : "/5Kg76ldv7VxeX9YlcQXiowHgdX6.jpg",
"movieReleaseDate" : "2018-12-07",
"movieTitle" : "Aquaman",
"movieVoteAverage" : 6.8,
"movieVoteCount" : 3668
},
"299536" : {
"movieBackdrop" : "/bOGkgRGdhrBYJSLpXaxhXVstddV.jpg",
"movieFavorite" : 0,
"movieID" : 299536,
"movieLanguage" : "en",
"movieOverview" : "As the Avengers and their allies have continued to protect the world from threats too large for any one hero to handle, a new danger has emerged from the cosmic shadows: Thanos. A despot of intergalactic infamy, his goal is to collect all six Infinity Stones, artifacts of unimaginable power, and use them to inflict his twisted will on all of reality. Everything the Avengers have fought for has led up to this moment - the fate of Earth and existence itself has never been more uncertain.",
"moviePopularity" : 109,
"moviePosterPath" : "/7WsyChQLEftFiDOVTGkv3hFpyyt.jpg",
"movieReleaseDate" : "2018-04-25",
"movieTitle" : "Avengers: Infinity War",
"movieVoteAverage" : 8.3,
"movieVoteCount" : 11448
},
Я создал свою базу данных Firebase с ключом movieID, а не сгенерированными значениями, поскольку мои идентификаторы всегда будут уникальными.
Теперь, когда яПопытка получить снимок, сохраненный как мой объект с помощью метода ниже, я продолжаю получать нулевую ошибку, указывающую на мой объект currentMovie, когда я пытаюсь экстраполировать некоторые данные объектов для обновления пользовательского интерфейса.Я знаю, что когда я проверяю .equalTo (String.valueOf (movieID)) - он передает значение, которое соответствует действительному значению, которое должно совпадать правильно, но я продолжаю получать нулевую ошибку.
mFirebaseDatabase = FirebaseDatabase.getInstance();
mMovieDatabaseReference = mFirebaseDatabase.getReference().child("movies");
Query movieQuery = mMovieDatabaseReference.orderByChild("movieID").equalTo(String.valueOf(movieID));
movieQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
currentMovie = dataSnapshot.getValue(Movie.class);
}
@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) {
}
});
Есть какие-нибудь мысли или идеи о том, почему у меня здесь так много проблем?