如何在没有快照键的情况下从 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}`)
})
无法同时跨 active
和 pending
节点执行相同的查询,因此您必须对每个节点执行单独的查询,或者更改你的数据模型有一个简单的用户列表。在这种情况下,您可能会将每个用户的状态和 UID 存储为子 属性,并使用 orderByChild("uid")
.
另请注意,使用推送 ID 作为键在这里似乎是一种反模式,因为我的猜测是每个 UID 应该只有一个状态。一个更好的数据模型是:
friends: {
"JrvFaTDGV6TnkZq6uGMNICxwGwo2": {
status: "active"
}
}
我正在尝试交友系统,但在接受邀请时我必须删除他列表中某个人的邀请,但没有密钥我做不到。
如何在数据库中按值(在本例中为 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}`)
})
无法同时跨 active
和 pending
节点执行相同的查询,因此您必须对每个节点执行单独的查询,或者更改你的数据模型有一个简单的用户列表。在这种情况下,您可能会将每个用户的状态和 UID 存储为子 属性,并使用 orderByChild("uid")
.
另请注意,使用推送 ID 作为键在这里似乎是一种反模式,因为我的猜测是每个 UID 应该只有一个状态。一个更好的数据模型是:
friends: {
"JrvFaTDGV6TnkZq6uGMNICxwGwo2": {
status: "active"
}
}