实际上,我正在实施一个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)
时精确地显示所有字段。
有人有解决方案吗?
谢谢!
答案 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;
。