Firebase数据库中的重复键

时间:2017-11-08 15:50:23

标签: android firebase firebase-realtime-database

实际上,我正在实施一个Firebase数据库来存储我的Android基础用户。

基本上,这是我的用户bean:

public class User {

    private String idAccount;
    private String firstname;
    private String lastname;
    private String pseudo;
    private Address address;
    private List<Qualification> qualification;
    private boolean isWorker;

    // Constructors + getters + setters

}

并且,一旦创建了用户,我将使用以下方法将其添加到数据库中:

String idUser = user.getIdAccount();
usersRef.child(idUser).setValue(user);

所以,这很简单,它有效,但我有一点问题。如果我检查数据库:the user added,我可以看到idAccount是重复的。

我知道这是完全正常的!但我正在寻找一种简单的方法来删除数据库中的这个字段idAccound,而不会在我使用setValue(user)时精确地显示所有字段。

有人有解决方案吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用@Exclude注释。

https://firebase.google.com/docs/reference/android/com/google/firebase/database/Exclude

public class User {
    @Exclude
    private String idAccount;
    private String firstname;
    private String lastname;
    private String pseudo;
    private Address address;
    private List<Qualification> qualification;
    private boolean isWorker;

    // Constructors + getters + setters

}

我不会这样做,但就是这样。

答案 1 :(得分:1)

要从整个数据库中删除该字段,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            ds.child("idAccount").getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
usersRef.addListenerForSingleValueEvent(eventListener);

之后,只需在模型类的字段前添加@Exclude注释,如下所示:

@Exclude
private String idAccount;

如果您仍在使用自己的应用进行测试,也可以完全删除private String idAccount;