我正在尝试从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();
}
});
如果具有特殊字符,如何从文档中获取数据?
答案 0 :(得分:1)
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());
}
}
});