我有一个简单的简单Firebase数据库,其中我有2个模型。一个ListModel
和一个UserModel
。在我的列表中,我使用push()
方法生成唯一ID。我希望将每个唯一ID添加为关键字,并将其作为Users/gmail@gmail,com/Lists
下的值添加为“true”。
当我添加第一个列表时,数据库看起来像这样:
在Users/gmail@gmail,com/Lists
中,第一个被第二个插入覆盖。如何添加特定ID和特定值,作为新项目如下所示?
这是我的代码:
final UserModel um = new UserModel();
um.setUserEmail("gmail@gmail,com");
userDatabaseReference.setValue(um);
ListModel lm = new ListModel();
lm.setListName(listName);
listKeyDatabaseReference = listDatabaseReference.push();
listKey = listKeyDatabaseReference.getKey();
listKeyDatabaseReference.setValue(lm);
listDatabaseReference.child(listKey).child("Users").child("gmail@gmail,com").setValue("true");
userDatabaseReference.child("gmail@gmail,com").child("Lists").child(listKey).setValue("true");
提前致谢!
答案 0 :(得分:2)
检查official doc:
对于基本写入操作,您可以使用
setValue()
将数据保存到指定的引用,替换该路径上的所有现有数据。
你的问题在这里:
userDatabaseReference.setValue(um);
通过这种方式,您将覆盖userDatabaseReference
路径中的所有孩子
这意味着当您添加第二条记录时,Users/gmail@gmail,com/Lists
中的第一条记录就会被删除。
使用
之前userDatabaseReference.setValue(um);
如果记录存在,您可以查看
如果不存在,请使用setValue
添加用户模型及其所有数据
如果存在,只需跳过此步骤并将数据添加到同一用户内的lists
路径中。