Firebase Firestore:如何在Android上将文档对象转换为POJO

时间:2017-10-09 05:32:27

标签: java android firebase google-cloud-firestore

使用实时数据库,可以这样做:

MyPojo pojo  = dataSnapshot.getValue(MyPojo.Class);

作为映射对象的一种方式,如何使用Firestore

执行此操作

代码:

FirebaseFirestore db = FirebaseFirestore.getInstance();
        db.collection("app/users/" + uid).document("notifications").get().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document != null) {
                    NotifPojo notifPojo = document....// here
                    return;
                }

            } else {
                Log.d("FragNotif", "get failed with ", task.getException());
            }
        });

3 个答案:

答案 0 :(得分:15)

使用DocumentSnapshot即可:

DocumentSnapshot document = future.get();
if (document.exists()) {
    // convert document to POJO
    NotifPojo notifPojo = document.toObject(NotifPojo.class);
}

答案 1 :(得分:1)

Java

    DocumentSnapshot document = future.get();
if (document.exists()) {
    // convert document to POJO
    NotifPojo notifPojo = document.toObject(NotifPojo.class);
} 

科特林

 val document = future.get()
 if (document.exists()) {
    // convert document to POJO
     val notifPojo = document.toObject(NotifPojo::class.java)
  }

重要的是要记住,您必须提供默认的构造函数,否则会出现经典的反序列化错误。对于 Java Notif() {}就足够了。对于 Kotlin ,初始化您的属性。

答案 2 :(得分:0)

不确定这是否是最好的方法,但这是我到目前为止所做的。

NotifPojo notifPojo = new Gson().fromJson(document.getData().toString(), NotifPojo.class);
编辑:我现在正在使用接受答案的内容。