Есть ли способ получить данные из подгруппы? Ниже приведена структура моей базы данных, для каждого пользователя будет создан только один документ во вложенной коллекции «userinfo» для хранения только имени пользователя и электронной почты.
Я пытаюсь получить значения "username" и "email" из Firestore, а затем установить значения в виде строк:
String username =? String email =?
"main"(root_collection)
|
|=>userid1(auto-generated)
|
|=>"userinfo"(sub-collection)=>documentID(auto)=>username: mary
| =>email:mary@gmail.com
|
|
|=>"emotions"(sub-collection)=>documentID(auto)=>happy: true
=>sad:false
=>depressed:false
Я прочитал некоторые другие ответы на другие вопросы, в которых говорилось, что значение поля можно получить с помощью
String value = documentSnapshot.getString("field");
, но я до сих пор не знаю, как это сделать ? Я написал кое-что, и я не знаю, как получить ценность.
FirebaseAuth mAuth = FirebaseAuth.getInstance();
String userId = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference userRef = db.collection("main").document(userId).collection("userinfo");
userRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
//get the value
String value = queryDocumentSnapshots.getDocuments("username"); // how ??
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(SettingsActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
});
также есть класс объектов UserInfo
import java.io.Serializable;
public class UserInfo implements Serializable {
private String email, username;
public UserInfo() {}
public UserInfo(String email, String username) {
this.email = email;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Пожалуйста, помогите, большое спасибо.