我正在尝试在不删除现有数据库的情况下为我的数据库添加单个值,因为我需要它们。结构类似于/ user / fav_post / {post_id_1,post_id_2,...}。 " fav_post"最初是空的,随着时间的推移,用户会添加更多的fav_posts。
解决这个问题的一种方法是下载所有喜欢的帖子,将它们放在HashMap中,添加新帖子并将它们推送到数据库,但这似乎不是最优的。
所以我想要实现的是拥有所有最喜欢的帖子并将它们显示给用户。
mDatabase.child("USERS")
.child(currentUser.getUid())
.child("favorites")
.setValue(postID);
编辑:最终结果应该是
最终的结果我想要那样 根
-User
--FavPosts
---postID1(String)
当用户收藏另一篇文章时,结果应该是这样的:
root
-User
--FavPosts
---postID1(String)
---postID2(String)
答案 0 :(得分:2)
setValue()将覆盖该位置的全部内容。如果您只想添加或更新子值,请改用updateChildren()。
答案 1 :(得分:2)
您正在寻找的是集:无序的唯一值集合。在Firebase数据库中,您将帖子ID存储为密钥,并且(因为Firebase不允许您存储没有值的密钥)true
作为值。
所以:
root: {
User: {
FavPosts: {
postID1: true,
postID2: true
}
}
}
您可以使用以下方式设置这些值:
mDatabase.child("USERS")
.child(currentUser.getUid())
.child("favorites")
.child(postID)
.setValue(true);