首页 > 解决方案 > Firebase 插入覆盖而不是附加

问题描述

我在firebase中有这个数据库结构: Firebase 数据库 它应该收集选票。我有几个类别,例如总统,部长……等。所有争夺“总统”席位的人都使用他们唯一的密钥列出,我试图收集所有选民的电子邮件。这是我的代码:

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());
    }

我遇到的问题是,当另一个用户登录并投票时,它不是附加他们的电子邮件,而是覆盖现有电子邮件。我该如何解决这个问题?谢谢

标签: javaandroidfirebasefirebase-realtime-database

解决方案


不要setValue()在该位置使用来收集电子邮件,这总是会覆盖现有数据,您应该push()首先考虑使用,它会使用随机 ID 生成一个新的孩子。您将希望熟悉有关使用数据列表的文档,尤其是附加到数据列表的文档。

totalVotesRef.push().setValue(vote.getVoterEmail())

每封电子邮件都将出现在该随机生成的子值下。


推荐阅读