我尝试使用 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}
这是数据库结构截图
正如您所看到的描述映射,但所有其他字段均为空。 任何帮助将不胜感激。
最佳答案
需要进行两项更改。
-> 将数据类中的每个数据成员公开
-> 用 @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/