Как я могу получить этот идентификатор?

Я не хотел делать это ключевым и ценным, я много пытался найти решение, но не могу

Как я могу получить этот идентификатор?

И это мой код, когда я пытался получить его по ключу и значению

mFriendID = (DatabaseReference) FirebaseDatabase.getInstance().getReference().child("friends").child(current_user).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fri_id = dataSnapshot.child("fri_id").getValue().toString();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

четко объясните, с какой ошибкой вы столкнулись?

Anubhav Gupta 14.08.2018 15:45

Добавьте структуру своей базы данных и укажите точный идентификатор, который вы хотите получить.

Alex Mamo 14.08.2018 15:53

Пожалуйста, покажите код вставки значений

OneCricketeer 14.08.2018 16:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
57
1

Ответы 1

Чтобы получить выделенный ключ, используйте следующий код:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("friends").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            Log.d("TAG", key);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

Имейте в виду, что при этом загружаются ВСЕ данные из friends. Я не рекомендую делать это, когда требуется только один ребенок. Такая стратегия не масштабируется и излишне тратит время и деньги разработчиков, когда следует использовать какое-то другое решение.

Doug Stevenson 14.08.2018 17:33

@DougStevenson Привет, Дуг, спасибо за ваш комментарий, но почему вы говорите, что "эффективно загружаются ВСЕ данные с friends"? uidRef указывает только на один uid (который имеет только один дочерний элемент), а не на узел enitre friends, верно?

Alex Mamo 14.08.2018 17:56

У него есть один ребенок на экране, которого вы видите - но какая у вас гарантия, что больше не может быть?

Doug Stevenson 14.08.2018 18:11

@DougStevenson Верно, Дуг, нет никаких гарантий. В этом случае я буду ждать, пока OP предоставит код, который используется для вставки значений, как также cricket_007, заданный в его комментарии. Таким образом, имея второй идентификатор (PRop ... nAk1), будет очень легко получить только одного ребенка. Спасибо!

Alex Mamo 14.08.2018 21:22

Другие вопросы по теме