如何在没有快照键的情况下从 firebase 获取价值 [JS]

How to get value from firebase without the snapshot key [JS]

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

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

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

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"
  }
}