我需要在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