Firestore получает значение из разных документов - PullRequest
0 голосов
/ 01 февраля 2020
sportsRef.collection("sports").documents [
["bowling" : [
"equipment": "bowling ball, bowling alley, bowling shoes",
"description": "bowl the ball" ]]

["football": [
"equipment": "ball, boots, shin pads, goalie gloves",
"description": "kick the ball in the goal" ]]

["darts": [
"equipment": "darts, dartboard",
"description": "throw the dart at the board" ]]

["boxing": [
"equipment": "boxing gloves, ring",
"description": "punch your contender" ]]

["shot put": [
"equipment": "shot put",
"description": "throw the shot put, looks like a ball" ]]
]
db.collectionGroup("sports").whereField("description", [i don't know what to 
put]).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>(){
@Override
   public void onSuccess(QuerySnapshot queryDocumentSnapshots){
//...
 }
});

Есть ли способ, которым я могу запросить все значения поля "описание"?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020
db.collection("sports").get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()){
                            spinnerDataList.add(document.getString("Description"));
                        }
                        adapter.notifyDataSetChanged();
                    }
                }
            });
0 голосов
/ 01 февраля 2020

Запрос в Firestore ограничивает то, какие документы извлекаются из коллекции. Поскольку вы хотите получить все документы, вам не следует использовать запрос.

db.collectionGroup("sports").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>(){
@Override
   public void onSuccess(QuerySnapshot queryDocumentSnapshots){
//...
 }
});

Теперь этот код получит все документы из всех sports коллекций. Затем в обработчике onSuccess вы можете l oop поверх этих документов и получить поле description от каждого из них.

Невозможно просто получить поле description из каждого документа с помощью Android SDK. Этот SDK всегда извлекает полные документы, поэтому вам нужно получить поле в onSuccess.

Если вы не хотите переносить все данные для других полей, рассмотрите возможность создания отдельной коллекции. где вы просто храните значения description каждого документа.

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