java - Firebase Firestore : Document is not mapping to Model class

标签 java android firebase google-cloud-firestore

我尝试使用 Firebase Firestore 构建应用,但在 SnapshotListener 上检索数据后,它没有映射到我的模型。

这是我的模型

public class BlogPost {
    private String description;
    private String image;
    private String user_id;
    private String thumbnail_url;
    private Timestamp timestamp;
    public BlogPost() {
    }
    public BlogPost(String description, String image, String user_id, String thumbnail_url, Timestamp  timestamp) {
        this.description = description;
        this.image = image;
        this.user_id = user_id;
        this.thumbnail_url = thumbnail_url;
        this.timestamp = timestamp;
    }

    public String getImageUrl() {
        return image;
    }

    public void setImageUrl(String image) {
        this.image = image;
    }

    public String getUserId() {
        return user_id;
    }

    public void setUserId(String user_id) {
        this.user_id = user_id;
    }

    public String getThumbnailUrl() {
        return thumbnail_url;
    }

    public void setThumbnailUrl(String thumbnail_url) {
        this.thumbnail_url = thumbnail_url;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Timestamp getPostTime() {
        return timestamp;
    }

    public void setPostTime(Timestamp timestamp) {
        this.timestamp = timestamp;
    }

}

要添加数据,我使用以下代码:

firestore.collection("posts").addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {

                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()){
                    if (doc.getType() == DocumentChange.Type.ADDED){
                        BlogPost blogPost = doc.getDocument().toObject(BlogPost.class);

                        blogList.add(blogPost);`

                        blogRecyclerAdapter.notifyDataSetChanged();
                    }
                }
            }
        });

这是映射后的对象

BlogPost{description='post 6', image='null', user_id='null', thumbnail_url='null', timestamp=null}

这是数据库结构截图

Database Structure

正如您所看到的描述映射,但所有其他字段均为空。 任何帮助将不胜感激。

最佳答案

需要进行两项更改。

-> 将数据类中的每个数据成员公开

-> 用 @PropertName() 注释它们

  public class BlogPost {

   @PropertyName("description")
   public String description;
   @PropertyName("image")
   public String image;
   @PropertyName("user_id")
   public String user_id;
   @PropertyName("thumbnail_url")
   public String thumbnail_url;
   @PropertyName("timestamp")
   public Timestamp timestamp;
  }

试试这个。

关于java - Firebase Firestore : Document is not mapping to Model class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168867/

相关文章:

firebase - 防止 firebase 用户删除自己

javascript - 在 Web 上的 Firebase 中将电话号码与 Facebook 和 Gmail 帐户相关联

java - 使用 RecyclerView 适配器在运行时更改布局屏幕

android - 转到 ionic 框架中的特定页面

javascript - 通过计算绑定(bind)在 Polymer 中使用 dom-repeat 从 Firebase 动态获取文件 url

java - 由于 ConnectException,Hadoop 映射失败

android - 我的网站无法在 iPhone 上正确缩放

java - 这是 LinkedList 的正确可视化吗?

java - 使用 Java 流将字符串列表转换为映射列表

java - scala 中具有多个非嵌套计数器的 For 循环