我正在尝试使用Firebase for Android进行某种评论。 只有一个问题,有没有办法向阵列添加新项目?
而且我不想每次都覆盖此对象,因为我将拥有多用户支持,并且在某些时候它将失败。
我试图将它作为List来做,不为我的模型创建DataTransferObjects,并支持使用firebase自动解析。
谢谢!如果实际上没有任何想法可以创建地图。
我的ObjectModel:
public class Company implements Parcelable {
private String id;
private String name;
private String description;
private List<Comment> comments;
}
推送项目的代码:
final DatabaseReference ref = companiesRef.child(companyId).child(NODE_COMMENTS).push();
return Single.create(e -> ref.setValue(comment)
.addOnCompleteListener(task -> {
e.onSuccess(task.isSuccessful());
}));
答案 0 :(得分:0)
这就是它的工作原理,看看我存储的下面的例子&#34; 0&#34;作为我的第一个评论ID和&#34; 1&#34;作为我的第二个评论ID。如您所见,我将lastCommentID存储为列表中最后一条注释的commentID。
{
"comments": {
"0": {
"text": "mycomment",
"time": "142351516"
},
"1": {
"text": "secondcomment",
"time": "153426564"
}
}
"lastCommentId": "1"
}
因此,每当您想要向firebase添加新注释时,您必须首先将lastCommentID作为字符串检索并将其转换为整数(例如1),然后将值1添加1(例如2),以便在保存下一个时评论它不会覆盖以前的版本。
请注意,每次向数据库添加注释时都要替换lastCommentID。
{
"comments": {
"0": {
"text": "mycomment",
"time": "142351516"
},
"1": {
"text": "secondcomment",
"time": "153426564"
},
"2": {
"text": "thirdcomment",
"time": "153426564"
}
}
"lastCommentId": "2"
}
答案 1 :(得分:0)
您不需要在Firebase中编写模型类,就可以使用Jackson解析地将JSON解析为Java对象并将其推送到Firebase中。
您可以使用Jackson将JSON解析为Java对象
。例如,您可以获得:对象,列表,哈希图,整数,字符串, 等等,而没有POJO类。
要了解更多信息,请访问this answer