Java 从Firestore获取数据从未成功完成

Java 从Firestore获取数据从未成功完成,java,android,firebase,google-cloud-firestore,nosql,Java,Android,Firebase,Google Cloud Firestore,Nosql,我不熟悉NoSQL数据库,但我正在尝试将Firestore与我正在开发的Android移动应用程序结合使用 我可以毫无问题地写入数据库,但我无法读取数据。见下面的代码: DocumentReference docRef = db.collection("users").document("abc@gmail.com"); docRef.get().addOnSuccessListener(new OnSuccessListener<Document

我不熟悉NoSQL数据库,但我正在尝试将Firestore与我正在开发的Android移动应用程序结合使用

我可以毫无问题地写入数据库,但我无法读取数据。见下面的代码:

DocumentReference docRef = db.collection("users").document("abc@gmail.com");

docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                User userFromDB = documentSnapshot.toObject(User.class);
            }
        });

我在这方面已经有一段时间了,如果有任何帮助,我将不胜感激。onSuccessListener的
onSuccessListener
用于向数据库写入操作。要获取数据,您需要使用
onCompletedListener
,如官方网站所示:

DocumentReference docRef=db.collection(“用户”).document(“abc@gmail.com");
docRef.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.exists()){
Log.d(标记“DocumentSnapshot data:+document.getData());
}否则{
日志d(标签“无此类文件”);
}
}否则{
Log.d(标记“get failed with”,task.getException());
}
}
});

考虑添加一个
onFailure
处理程序,看看是否会触发,如果是,会出现什么错误。请添加onFailure,正如Frank van Puffelen所评论的那样,并告诉我们是否打印了一些内容?@FrankvanPuffelen我添加了一个onFailure监听器,但程序执行也会跳过它…我正试图检索一个自定义对象。如果转到文档中的“自定义对象”部分,将使用OnSuccessListener。我不介意尝试OnCompleteListener,但您知道如何将task.getResult()转换为用户对象吗?document.toObject(User.class)似乎无法与OnCompleteListener一起使用
DocumentSnapshot
始终是同一个类。是的,如图所示:您应该能够将其转换为
User
类。只要确保有一个合适的构造函数。
match /{document=**} {
  allow read, write: if true
}