Не удается получить доступ к ключу документа в узле Firstore - PullRequest
0 голосов
/ 24 ноября 2018

Я пишу в Firestore после создания пользователя, как указано ниже:

                userMap.put("email", user.getEmail());
                userMap.put("display_name", user.getDisplayName());
                userMap.put("user_id", user.getUid());
                userMap.put("provider", user.getProviders());
                mStoreBaseRef.collection(USERS).add(userMap);

Когда этот пользователь записывается в Firestore, для этого пользователя генерируется уникальный идентификатор.

Позже я хочу написать в пользовательский узел, однако у меня нет уникального ключа, который был сгенерирован.Я запрашиваю узел «Пользователи» на основе определенного идентификатора пользователя, чтобы я мог писать на этот узел, но я не уверен, как получить ключ для этого конкретного пользователя:

Query x = mStoreBaseRef.collection(USERS_LABEL).whereEqualTo("user_id", mPollCreatorID);
                x.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        for (DocumentSnapshot d : task.getResult()){
                            User user = d.toObject(User.class);
                            Log.v("USER", user.getUser_id());
                            //I need to add the document here of the unique key
                            mStoreBaseRef.collection(USERS_LABEL).add(followersMap);
                        }
                    }

Я пытаюсьчтобы получить mAQGM9S ....... снизу

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Идентификатор документа доступен через DocumentSnapshot.getId().Итак:

Query x = mStoreBaseRef.collection(USERS_LABEL).whereEqualTo("user_id", mPollCreatorID);
x.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        for (DocumentSnapshot d : task.getResult()){
            Log.v("ID", d.getId());
            User user = d.toObject(User.class);
            Log.v("USER", user.getUser_id());
            //I need to add the document here of the unique key
            mStoreBaseRef.collection(USERS_LABEL).add(followersMap);
        }
    }
0 голосов
/ 24 ноября 2018

Вы запрашиваете push id этого документа.Для этого вам следует использовать метод getId().Вот как вы можете это сделать:

    Query x = mStoreBaseRef.collection(USERS_LABEL).whereEqualTo("user_id", mPollCreatorID);
    x.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            for (DocumentSnapshot d : task.getResult()){
                User user = d.toObject(User.class);
                //Getting push id
                String pushId = d.getId();
                Log.v("USER", pushId);

                //... 
            }
        }

Попробуйте и дайте нам знать, работает ли он или нет.

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