Firebase - 为每一行添加一个值

Firebase - Adding a value for every row

假设我有 myfirebase.firebaseio.com/ 的这个 Firebase table,在 accounts 中我有这个数据:

{
  "uid:12123" : {
    "email" : "charmin@ultra.net",
    "username" : "Charmin"
  },
  "uid:253" : {
    "email" : "dejan@damjanovic.net",
    "username" : "Dejan"
  },
  "uid:353" : {
    "email" : "what@ever.net",
    "username" : "Tester"
  },
  "uid:873" : {
    "email" : "green@hand.net",
    "username" : "Green Guy"
  }
}

如何将 value/key 添加到每一行 uid:12123uid:253uid:353 等...而无需手动执行?

在 Firebase 中,您可以注册一个 on('child_added' 侦听器。这将立即为每个现有的 child 触发,然后为之后添加的每个 child 触发。有了这些知识,您可以更新每个用户:

var ref = new Firebase('https://myfirebase.firebaseio.com/accounts');
ref.on('child_added', function(snapshot) {
    snapshot.ref().update({ uid: snapshot.key() });
});

请注意,我们在此处重复数据,因为您要查找的值已作为 snapshot.key() 提供。虽然在 NoSQL 数据库中复制通常是一个好主意,但为了确保您可以一次读取所需的数据,在这里感觉很浪费。

请注意,大多数这些操作都包含在 Firebase's quickstart and all of them are certainly covered in the programming guide 中。花一些时间在他们两个上是非常值得的。