我是使用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>
答案 0 :(得分:0)
该问题与Firebase无关,但这是我的代码。在初始加载期间,spaceID
和userId
对所有用户都是空的,并且为null
键设置了时间。每当有新用户登录时,此信息就会更新,而在同一会话中的旧用户将获得更新并因此注销。