ArrayList<ListingModel> list = new ArrayList<ListingModel>();
list.add(model);
list.add(model2);
list.add(model3);
list.add(model4);
for (ListingModel m : list) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("node");
myRef.push().setValue(m);
}
我正在尝试将4个对象从android app保存到firebase数据库。所以我使用循环将数据存储到节点中。它应该创建4个具有自动id的不同子,并将对象存储在那里。但它只将最后一个模型存储在一个唯一的ID中,如下图所示:
如何保存具有唯一ID的所有四个对象(列表中的数据)?
答案 0 :(得分:1)
在firebase上完整记录
private void writeNewPost(String userId, String username, String title, String body) {
// Create new post at /user-posts/$userid/$postid and at
// /posts/$postid simultaneously
String key = mDatabase.child("posts").push().getKey();
Post post = new Post(userId, username, title, body);
Map<String, Object> postValues = post.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/posts/" + key, postValues);
childUpdates.put("/user-posts/" + userId + "/" + key, postValues);
mDatabase.updateChildren(childUpdates);
}
将模型放入地图中,放置它们,然后使用updateChildren
答案 1 :(得分:1)
最好的方法是使用for循环。
ArrayList<ListingModel> list = new ArrayList<ListingModel>();
list.add(model);
list.add(model2);
list.add(model3);
list.add(model4);
for (int i =0; i<list.size();i++){
ListingModel model = list.get(i);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("node");
myRef.child(i).setValue(model);
}
答案 2 :(得分:0)
所以问题在于我如何设置模型(对不起我的问题中的部分代码)
ListingModel model = new ListingModel();
model.setTitle("test0");
ListingModel model1 = new ListingModel();
model.setTitle("test1");
ListingModel model2 = new ListingModel();
model.setTitle("test2");
ListingModel model3 = new ListingModel();
model.setTitle("test3");
我正在实例化不同的模型,但只改变了第一个模型的值。
model1,model2和model3 为空,因此没有出现在firebase数据库中作为空对象。
答案 3 :(得分:0)
我认为代码只能读取一次。当您使用相同的ID来写入数据时,您将覆盖以前的版本。
ArrayList<ListingModel> list = new ArrayList<ListingModel>();
list.add(model);
list.add(model2);
list.add(model3);
list.add(model4);
for (ListingModel m : list) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("node");
String modelID = myRef.push().getKey();
myRef.child(modelID).setValue(m);
}
试试这个,我希望它有所帮助。
顺便说一句,练习使用updateChildren而不是setValue来保存数据。