Имеет ли точка остановка какую-либо разницу в области пожарных? - PullRequest
0 голосов
/ 03 июля 2018

Ниже приведен код. Он читает значение " 1 @ gmail ", но дает null для "1@gmail.com". Кто-нибудь может объяснить, почему это так?

for(DocumentSnapshot document:task.getResult()){
                            String status = document.getString("1@gmail");
                            String status2 = document.getString("1@gmail.com");
                            Log.v(TAG, "index=" + status);
                            Log.v(TAG, "index=" + status2);
}

enter image description here

1 Ответ

0 голосов
/ 03 июля 2018

Это потому, что . - это специальный символ в документах Firestore. Во-первых, обратитесь к документации по Firestore " Ограничения на пути к полям ":

Должны разделять имена полей с одним периодом (.)

Путь к полю, который вы указали с помощью "1@gmail.com", содержит ., который интерпретируется как разделитель пути к полю. Он ищет в документе поле объекта с именем 1@gmail, а затем пытается получить доступ к полю com этого объекта. Очевидно, что это не будет найдено здесь, и оно возвращает ноль.

Если вы хотите получить доступ к имени поля с . в нем, вам придется обернуть его в FieldPath объект:

Object o = document.get(FieldPath.of("1@gmail.com"));
String status2 = (String) o;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...