【问题标题】:How to get value from firebase without the snapshot key [JS]如何在没有快照键 [JS] 的情况下从 firebase 获取价值
【发布时间】:2022-01-21 16:38:06
【问题描述】:

我正在尝试结交朋友系统,但在接受邀请时,我必须删除他列表中某个人的邀请,但没有密钥我无法做到。

如何在数据库中按值(在本例中为 uid)获取快照键?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    Firebase 实时数据库查询在单个路径上工作,然后在每个直接子节点下的固定路径上对值进行排序/过滤。在您的情况下,如果您知道用户是活跃的还是待定的,您可以找到一个特定的值:

    const ref = firebase.database().ref("friends");
    const query = ref.child("active").orderByValue().equalTo("JrvFaTDGV6TnkZq6uGMNICxwGwo2")
    const results = query.get();
    results.forEach((snapshot) => {
      console.log(`Found value ${snapshot.val()} under key ${snapshot.key}`)
    })
    

    无法同时在 activepending 节点上执行相同的查询,因此您必须为每个节点执行单独的查询,或者更改您的数据模型以获得单一的平面用户列表。在这种情况下,您可能会将每个用户的状态和 UID 存储为子属性,并使用 orderByChild("uid")


    还要注意,使用推送 ID 作为键在这里似乎是一种反模式,因为我的猜测是每个 UID 应该只有一个状态。一个更好的数据模型是:

    friends: {
      "JrvFaTDGV6TnkZq6uGMNICxwGwo2": {
        status: "active"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多