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