Вызывается метод базы данных Firebase .on ('value'), даже если дочерний элемент добавлен на том же уровне - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в использовании базы данных Firebase.Я пытаюсь сохранить время входа пользователя в базу данных Firebase.Пример кода ниже.

const USER_LOGIN_TIME = "UserLoginTime";
  const userId = localStorage.getItem("userId")!;
  const spaceId = localStorage.getItem("spaceId")!;
  const loginTime = database.ref(`${spaceId}/${USER_LOGIN_TIME}/${userId}`);
  loginTime.set(time);
  loginTime.on('value', (snapshot: any) => {
    let latestTime = snapshot.val();
    // This is getting called even if some new user logs in
    // some logic goes here
  });

loginTime хранится правильно.

Я предполагаю, что .on('value') будет вызван, только если значение изменится на ${spaceId}/${USER_LOGIN_TIME}/${userId}.

Но проблема в том, что .on('value') метод вызывается всякий раз, когда в ${spaceId}/${USER_LOGIN_TIME} появляется новая запись.Новая запись будет добавлена, когда новый пользователь войдет в другой браузер.

Не уверен, что я делаю здесь неправильно!Любая помощь приветствуется.

Обновление Моя схема базы данных Firebase:

- <spaceID> - UserLoginTime - <UserID> - time: <timestamp> - <UserID> - time: <timestamp>

1 Ответ

0 голосов
/ 19 декабря 2018

Проблема не связана с Firebase, но это мой код.Во время начальной загрузки spaceID и userId равны нулю для всех пользователей, и для клавиши null установлено время.Это обновляется всякий раз, когда новый пользователь входит в систему, и старые пользователи в том же сеансе будут получать обновления и, следовательно, выходить из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...