Как я могу получить доступ к узлу в Firebase, у которого есть случайный ключ?

#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».