Как получить данные из документа, имеющего специальный символ в Firestore - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь получить данные из Firestore, но получаю null, если документ имеет специальный символ, например Сан-Паулу , и это произошло только с Сан-Паулу .

Рабочий запрос:

db.collection("streets")
                .document("Arlington")
                .collection("street")
                .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                List<DocumentSnapshot> docSnap = task.getResult().getDocuments();
            }
        });

Не рабочий запрос:

db.collection("streets")
                .document("São Paulo")
                .collection("street")
                .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                List<DocumentSnapshot> docSnap = task.getResult().getDocuments();
            }
        });

Как получить данные из документа, если он имеет специальный символ?

Firestore database structure

enter image description here

1 Ответ

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

Нет проблем со спецсимволами в Firestore.Документ с именем São Paulo должен работать идеально.Как я вижу в вашей схеме, в этом документе нет полей, поэтому он также записан в italic.Поэтому, если вы пытаетесь получить этот документ, это ожидаемое поведение.

Если вы хотите получить все документы в коллекции, вам нужно перебрать task.getResult(), как показано в следующих строках кода:

yourCollectionRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Log.d(TAG, document.getId() + " => " + document.getData());
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

Редактировать:

db.collection("streets").document("São Paulo").collection("street").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Log.d(TAG, document.getString("city"));
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...