Итак, для моего проекта я отправляю метку времени сервера в Firebase, а затем немедленно извлекаю ее для преобразования в строку, чтобы использовать в качестве уникального идентификатора для созданных пользователем объектов.
Данные вложены в Timestamps/UserID/[this is where the timestamp is]
Проблема в том, что при извлечении данных вы не можете добавить объект карты как child () в addValueEventListener
, поэтому я застрял с получением уникального идентификатора пользователя вместо отметки времени.
Это возвращает что-то вроде:
DataSnapshot{key = [User's Unique ID], value = [timestamp i'm trying to isolate]}
Вместо того, чтобы восстановить все тарабарщины, я просто хочу отметку времени.
Вот код, заранее спасибо.
public void createFlat(){
/////WRITE TIMESTAMP VALUE TO SERVER UNDER TEMP NODE/////
final Map timestampMap = ServerValue.TIMESTAMP;
FirebaseDatabase.getInstance().getReference("Timestamps")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(timestampMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(getApplicationContext(),"timestamp written",Toast.LENGTH_SHORT).show();
/////RETRIEVE TIMESTAMP FROM SERVER AND CONVERT IT TO A STRING/////
final FirebaseDatabase database = FirebaseDatabase.getInstance();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = database.getReference("Timestamps").child(uid); //here is the issue, can't add child(timestampMap)
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String timestampString = dataSnapshot.toString();
textView2.setText(timestampString);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_SHORT).show();
}
});
}else{
Toast.makeText(getApplicationContext(),task.getException().getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
}