我正在构建一个代码,希望在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
。