【发布时间】:2018-03-07 10:31:58
【问题描述】:
Record{
Push_key():
{
duration: "30"
rate: "2"
}
}
Account{
Push_key():
{
email:"abc@gmail.com"
Rate:"2"
}
}
上面显示了 Firebase 数据库结构。 我有一个按钮,它可以在单击时将记录保存到数据库中:
btnSave.setOnClickListener(new OnClickListener(){
public void onClick(View v){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Record");
String key = ref.push().getKey();
ref.child(key).child("rate").setValue(strRate);
}
});
其中 strRate 被定义为 public 并声明如下:
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
String email = user.getEmail();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Account");
Query query = ref.orderByChild("email").startAt(email).endAt(email+"\uf8ff");
query.addValueEventListener(new ValueEventListener(){
public void onDataChange(DataSnapshot dataSnapshot){
for (DataSnapshot child : dataSnapshot.getChildren()){
strRate = child.child("Rate").getValue().toString();
...
}
}
});
问题:将记录保存到 firebase 的 Record 表中后,我将 Account with email: "abc" 中的 Rate 值从 "2" 更改为 "1"。更改仅在 Account 表中进行,但不知何故,Record 表中保存的记录随着 Account 表中的修改而更改。当在账户表中进行更改时,记录表中的初始费率:“2”更改为“1”,其中费率:“2”更改为费率:“1”。在四处搜索之后,我怀疑这是由于 strRate 的 onDataChanged() 而发生的。希望得到答案!
【问题讨论】:
-
能否分享整个页面的代码?
标签: java android firebase firebase-realtime-database firebase-authentication