#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
Я хочу получить доступ к projectImageUrl, но проблема в том, что между проектами и URL-адресом изображения проекта для каждого проекта есть случайный ключ, так что каждый проект должен иметь уникальное имя, так как я могу получить доступ к projectImageUrl?
Комментарии:
1. Можете ли вы также показать нам содержимое вашего
projectImageUrl
узла?2. да, вы можете увидеть это сейчас
3. Хорошо, я сразу же напишу вам ответ.
Ответ №1:
Как я могу получить доступ к узлу в Firebase, у которого есть случайный ключ?
На самом деле это не случайно. Как я вижу в вашей схеме базы данных, вы используете в качестве ключа для объекта User значение UID, которое объединено с датой и временем. Дата и время уже отделены от пользовательского объекта. Добавлять их вместе с UID на самом деле не нужно, потому что UID уже уникальны. Нет необходимости добавлять что-либо еще, чтобы сделать его «более» уникальным. Моя рекомендация — использовать только UID и ничего больше. В этом случае, чтобы получить URL-адреса, которые существуют в узле projectImageUrl, пожалуйста, используйте следующие строки кода:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference projectImageUrlRef = rootRef.child("Projects").child(uid).child("projectImageUrl");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String url = ds.getValue(String.class);
Log.d("TAG", url);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
projectImageUrlRef.addListenerForSingleValueEvent(valueEventListener);
Результатом в logcat будут URL-адреса, которые существуют в узле projectImageUrl. Если вам нужно сохранить дату и время, пожалуйста, измените projectImageUrlRef на:
DatabaseReference projectImageUrlRef = rootRef.child("Projects").child(uid date time).child("projectImageUrl");
Где эта дата должна содержать значение «06-Oct-2020» и время «16:37: 9».