【问题标题】:Firebase Realtime Database is sometimes not updatedFirebase 实时数据库有时未更新
【发布时间】:2021-10-05 21:49:58
【问题描述】:

我已经通过引用Firebase documentation 实现了在线状态功能。但是,有时由 onDisconnect 引起的在线状态不会更新,而是保留在实时数据库中。 我无法确定问题,但它似乎发生在 Mac / safari 和 iOS 上。

....

  useEffect(() => {
    const connectedRef = ref(db, '.info/connected');

    const unsubscribe = onValue(connectedRef, async (snap) => {
      if (snap.val() === true) {
        const con = await push(myConnectionsRef);

        await onDisconnect(con).remove();

        await set(con, true);
      }
    });

    return () => {
      unsubscribe();
    };
  }, []);

....

安全规则如下,我觉得不是退出登录不写的问题。

{
  "rules": {
    "connections": {
      ".read": true,
      ".write": true
    }
  }
}

【问题讨论】:

    标签: reactjs firebase firebase-realtime-database


    【解决方案1】:

    你能不能试着把规则改成这样:

    {
      "rules": {
        "connections": {
          allow read, write: if request.auth != null;
        }
      }
    }
    

    也就是说,只有登录的用户才能访问。

    【讨论】:

    • 谢谢你,Eljos。但是我之前写过下面的代码,即使这样我也遇到了剩余状态的问题。 ``` { "rules": { "connections": { ".read": true, "$uid":{ ".write": "auth.uid === $uid" } } } } ``您给出的建议似乎与上面的代码没有太大的不同。
    • @yyddoi 你是在做实时数据库还是 Firestore?您提供的文档是 Firestore 的
    • 我想知道的是关于实时数据库的规范。我也在使用 Firestore,所以我弄错了文档。 Here 是实时数据库的文档,虽然基本实现没有太大区别
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多