我是使用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
的存储正确。
我假设只有在${spaceId}/${USER_LOGIN_TIME}/${userId}
中的值更改时才会调用.on('value')
。
但是,每当${spaceId}/${USER_LOGIN_TIME}
中有新条目时,.on('value')
方法就会被调用。当新用户在其他浏览器中登录时,将添加新的条目。
不确定我在这里做错了什么!任何帮助都将不胜感激。
更新我的Firebase DB模式:
- <spaceID>
- UserLoginTime
- <UserID>
- time: <timestamp>
- <UserID>
- time: <timestamp>
问题与firebase无关,但这是我的代码。在最初的加载期间,spaceID
和userId
对于所有用户都是无效的,并且为null
密钥设置了时间。只要新用户登录到同一会话中的旧用户时,都会更新此更新。