我需要在Android應用中增加每個用戶的能量值。在Firebase中讀取和寫入數據
這裏是我的數據庫的方案:
"Users" : {
"NRPdi5gzbsWoHSfovOtIO8XgFjZ2" : {
"Character" : {
energyCurrent : 0,
energyMax : 100,
energyObtain : 20,
and other char values..
}
}
}
我看了,做了一些計算,此代碼寫入數據,但沒有在我的火力地堡數據庫更改。此代碼位於Google App Engine上。沒有例外發送,只是沒有任何反應。
final FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("Users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot childSnap : snapshot.getChildren()) {
int energyCurrent;
int energyMax;
int energyObtain;
try {
energyCurrent = (int) childSnap.child("Character").child("energyCurrent").getValue();
energyMax = (int) childSnap.child("Character").child("energyMax").getValue();
energyObtain = (int) childSnap.child("Character").child("energyObtain").getValue();
}
catch (Exception e)
{
continue;
}
float finalEnergy = energyCurrent + (energyMax * (energyObtain/100));
if (finalEnergy > energyMax){
DatabaseReference reference = childSnap.getRef().child("Character").child("energyCurrent");
reference.setValue(energyMax, new DatabaseReference.CompletionListener() {
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
throw databaseError.toException();
}
});
}
else
{
DatabaseReference reference = childSnap.getRef().child("Character").child("energyCurrent");
reference.setValue((int)finalEnergy, new DatabaseReference.CompletionListener() {
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
throw databaseError.toException();
}
});
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
是否使用管理SDK?您是否創建了服務帳戶並將其用於[驗證您的服務器](https://firebase.google.com/docs/database/admin/start#admin-sdk-authentication)? –
你忽略了'onCanclled()'可能會報告的問題。要抓住它們'throw databaseError.toException()'。請參閱http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database/19721/detect-errors-when-writing-a-value-on -android#t = 201612140118182865968 –
@FrankvanPuffelen不會拋出異常。 – Maxgmer