Я заметил что-то странное в своем приложении.Прежде всего, я регистрируюсь.
И затем захожу на экран приветствия.
И чтобы убедиться, что я действительно зарегистрирован в firebase, я иду в консоль.Сначала в Аутентификации
А затем в Базе данных, где вы видите узел с именем Users (я объявил как Users, когда я регистрировался).
Но допустим, что я случайно удалил этого пользователя из БД.Пользователь все еще вошел в приложение и пытается прокомментировать статью.Очевидно, что будет ответ,
E/CommentActivity: User AhtNY3bm7aQdPiJewf3PBN310732 is unexpectedly null
И это идет отсюда.
User user = dataSnapshot.getValue(User.class);
// [START_EXCLUDE]
if (user == null) {
// User is null, error out
Log.e(TAG, "User " + userId + " is unexpectedly null");
Toast.makeText(CommentActivity.this,
"Error: could not fetch user.",
Toast.LENGTH_SHORT).show();
}
Весь код CommentActivity здесь здесь .
Есть ли способ избежать такой ошибки?Я имею в виду, что как только пользователь зарегистрирован в firebase, он может оставлять комментарии, даже если он был случайно удален.Может быть, использовать какой-либо из методов установки / получения здесь?
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
ОБНОВЛЕНИЕ
Я положил эти правила
{
"rules": {
".read": "auth != null",
".write": "auth != null"
},
{
"rules": {
"comments": {
".write": "auth != null && root.child('Users').hasChild(auth.uid)"
".read": "auth != null"
}
}
}
}
, но я получаюошибка синтаксиса.