Я создаю код, в котором я хочу сохранить некоторые данные в базе данных Firebase. Ссылка на базу данных databasereference
и уникальная databasereference.push()
.
Проблема в том, что код работает до OnCompleteListener
. Тогда, кажется, остановиться.
Код:
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("firstname").getValue().toString() + " " + dataSnapshot.child("lastname").getValue().toString();
unique.child("name").setValue(name).addOnCompleteListener(
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
unique.child("UserId").setValue(userId);
int ts = (int) (System.currentTimeMillis()/1000);
unique.child("time").setValue(0-ts);
}
}
}
);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Здесь база данных хранит только дочерние элементы name
. Если мы изменим код следующим образом:
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("firstname").getValue().toString() + " " + dataSnapshot.child("lastname").getValue().toString();
unique.child("UserId").setValue(userId);
int ts = (int) (System.currentTimeMillis()/1000);
unique.child("time").setValue(0-ts);
unique.child("name").setValue(name).addOnCompleteListener(
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
unique.child("somethingElse").setValue("something else");
}
}
}
);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
В этом случае хранятся userId
, time
, name
, но не somethingElse
.