下面是代码。它读取“ 1 @ gmail ”的值,但为“ 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);
}
答案 0 :(得分:3)
这是因为.
是Firestore文档的特殊字符。首先,请参阅Firestore“ Constraints on field paths”上的文档:
必须使用单个句点(。)分隔字段名称
您使用“ 1@gmail.com”指定的字段路径包含.
,它被解释为字段路径分隔符。它正在做的是在文档1@gmail
中寻找一个对象字段,然后尝试访问该对象的com
字段。显然,在这里找不到它,并且它返回null。
如果要访问其中带有.
的字段名称,则必须将其包装到FieldPath对象中:
Object o = document.get(FieldPath.of("1@gmail.com"));
String status2 = (String) o;