Я создаю приложение для Android с активностью регистрации, я могу добавлять данные в базу данных Firebase, но у меня возникают проблемы с запросом существующих данных.По сути, я пытаюсь выполнить простой поиск по имени пользователя, который позволит пользователю уведомить его о том, что имя пользователя уже существует (чтобы они могли создать уникальное имя). Я уверен, что я делаю простую ошибку.Я создал отдельный узел, который является просто существующими именами пользователей (не уверен, что это разумно или нет, хаха).мой код все еще добавляет пользователя, даже если имя пользователя существует.любая помощь в этом вопросе будет УДИВИТЕЛЬНОЙ!спасибо всем!
Я попытался использовать dataSnapshot.exists и поигрался с узлами и т. д. (как я упоминал ранее при добавлении отдельного узла имени пользователя)
{
"all usernames" : {
"-LbEvUXcT9Mc3V7awfBz" : "qwerty",
"-LbEwLUAwQsnlwFeya5o" : "ted"
},
"users" : {
"CgnIejgGw0QvNAGbY5LWx6o17Us1" : {
"userEmail" : "ted@gmail.com",
"userName" : "ted"
}
}
}
в случае, если мое изображение делаетне показывать мой узел, настроенный как показано выше:
username = etUsername.getText().toString();
myRef.child("users").child("userName").equalTo(username).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Toast.makeText(getContext(),"username Exists",Toast.LENGTH_LONG).show();
} else {
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myRef = firebaseDatabase.getReference();
String userId = mAuth.getUid();
userEmail = etEmail.getText().toString();
username = etUsername.getText().toString();
UserProfile userProfile = new UserProfile(username, userEmail);
myRef.child("users").child(userId).setValue(userProfile);
myRef.child("all usernames").push().setValue(username);
createUser();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});[database structure][1]
[1]: https://i.stack.imgur.com/Xjfq5.png