我在 firebase 中有这个数据库结构: 它应该收集选票。我有几个类别,例如总统、部长等。所有争夺“总统”席位的人都使用他们独特的 key 列出,我正在尝试收集所有选民的电子邮件。 这是我的代码:
public static void insertvote(String userkey, String categ, String candId) {
System.out.println("Returned candidate's userkey or ID: "+userkey);
System.out.println("Returned category: "+categ);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference totalVotesRef = rootRef.child("votes").child(categ).child(candId);
Vote vote = new Vote(userkey);
totalVotesRef.setValue(vote.getVoterEmail());
}
我遇到的问题是,当另一个用户登录并投票时,它不会附加他们的电子邮件,而是会覆盖现有电子邮件。 我该如何解决这个问题? 谢谢
最佳答案
您应该考虑使用push()
,而不是在收集电子邮件的位置使用setValue()
,这总是会覆盖现有数据。首先,它使用随机 ID 生成一个新的子项。您将需要熟悉有关使用数据列表的文档,尤其是 appending to a list of data .
totalVotesRef.push().setValue(vote.getVoterEmail())
每封电子邮件都会显示在随机生成的子值下。
关于java - Firebase 插入会覆盖而不是追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918528/