Я столкнулся с очень запутанной проблемой в базе данных firebase, когда попытался запросить свое поле user_name, чтобы проверить, существует ли оно уже в базе данных или нет.Он работал раньше, но внезапно перестал работать ... Вот мой код:
Query query = myRef.child(getString(R.string.usersNode)).orderByChild("user_name").equalTo("codeni8");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Log.d(TAG,"username already exist");
}else {
Log.d(TAG,"username does't exist");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Я не знаю почему, но каждый раз, когда я запускаю его.Его поговорка «имя пользователя не существует», хотя на самом деле он существует в базе данных.

Я не знаю, что делать.Я думаю, что проблема началась, когда я обновил свою зависимость от firebase до «16.0.5»
Вот моя модель данных класса пользователей:
public class Users {
private String user_id;
private String user_name;
private String display_name;
private String email;
private String profile_photo;
private String cover_photo;
private String bio;
private String website;
private long posts;
private long followers;
private long following;
private String phone_no;
private String gender;
public Users() {
}
public Users(String user_id, String user_name, String display_name, String email, String profile_photo, String cover_photo, String bio, String website, long posts, long followers, long following, String phone_no, String gender) {
this.user_id = user_id;
this.user_name = user_name;
this.display_name = display_name;
this.email = email;
this.profile_photo = profile_photo;
this.cover_photo = cover_photo;
this.bio = bio;
this.website = website;
this.posts = posts;
this.followers = followers;
this.following = following;
this.phone_no = phone_no;
this.gender = gender;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getDisplay_name() {
return display_name;
}
public void setDisplay_name(String display_name) {
this.display_name = display_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getProfile_photo() {
return profile_photo;
}
public void setProfile_photo(String profile_photo) {
this.profile_photo = profile_photo;
}
public String getCover_photo() {
return cover_photo;
}
public void setCover_photo(String cover_photo) {
this.cover_photo = cover_photo;
}
public String getBio() {
return bio;
}
public void setBio(String bio) {
this.bio = bio;
}
public String getWebsite() { return website; }
public void setWebsite(String website) { this.website = website; }
public long getPosts() {
return posts;
}
public void setPosts(long posts) {
this.posts = posts;
}
public long getFollowers() {
return followers;
}
public void setFollowers(long followers) {
this.followers = followers;
}
public long getFollowing() {
return following;
}
public void setFollowing(long following) {
this.following = following;
}
public String getPhone_no() {
return phone_no;
}
public void setPhone_no(String phone_no) {
this.phone_no = phone_no;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
ОБНОВЛЕНИЕ: Iя получаю это предупреждение в моем поле "user_name":
"Использование неуказанного индекса. Ваши данные будут загружены и отфильтрованы на клиенте. Попробуйте добавить" .indexOn ":" user_name "'к пользователям в вашправила безопасности и базы данных Firebase для повышения производительности "
Это вызывает проблему ??Как я могу добавить indexOn
Решенная проблема: Я думаю, что ".indexOn" был проблемой, а также я использовал автономные функции Firebase и забыл синхронизировать конкретный узел, я просто сделал "nodeRefrence".keepSynced (true) "и теперь все работает ..