即使在同一级别添加了子级,也会调用Firebase数据库.on('value')方法

时间:2018-12-19 15:08:00

标签: firebase firebase-realtime-database

我是使用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 :(得分:0)

该问题与Firebase无关,但这是我的代码。在初始加载期间,spaceIDuserId对所有用户都是空的,并且为null键设置了时间。每当有新用户登录时,此信息就会更新,而在同一会话中的旧用户将获得更新并因此注销。