从 Firebase 实时数据库中的列表中获取一些(而不是全部)属性

Fetch some (and not all) properties from a list in Firebase Realtime Database

假设我的实时数据库中有一个列表,它在位置 userList 处有一个用户列表:

user1: { age: 20, name: john }

user2 : { age: 40, name: sam }

user3: { age: 30, name: cynthia }

有没有办法让我编写一个查询来仅从上面的 userList 中获取年龄?

我目前正在使用 Angular 11,并借助 Angular Fire 包与 Firebase 数据库进行通信。

注意:为了清楚起见,我已经从上面的示例中删除了撇号。

没有直接的方法。您将必须获取完整的节点,然后手动使用 Javascript 对其进行排序。但是如果你只想获取一个字段,那么你可以尝试这个函数,它对每个用户的年龄进行单独请求:

async function getAges() {
  const dbRef = firebase.database().ref("users")
  const requests = []

  const users = ["user1", "user2", "user3"]
  for (const user of users) {
    requests.push(dbRef.child(user).child("age").once("value"))
  }

  const snapshots = await Promise.all(requests)
  console.log(snapshots.map(snap => `${snap.ref.parent.key} -> ${snap.val()}`))
}

控制台的输出应该是这样的:

尽管您需要所有节点的密钥,即所有用户的 UID。如果您只将 UID 存储在某处,那么此方法将很有用,可以获取获取完整用户节点所需的密钥。