从使用AngularFire通过$ add添加的元素中获取密钥

时间:2015-01-06 16:31:37

标签: firebase angularfire

我正在将FireularFire与Firebase一起使用,并希望通过$add()方法获取刚刚添加的元素的键。有" vanilla"以及#34; vanilla" Firebase,请参阅"获取push()"生成的唯一ID here。但是,它似乎与AngularFire相当于$id

var ref = $firebase(firebaseData.ref()).$asArray();
var newItem = ref.$add({fruit: "apple", color: "red"});
var itemId = newItem.$id;
// Do stuff with itemID...

newItem已使用新密钥(例如-Jf-06c0QX_vMMNL3Aek)成功添加到Firebase,但itemId返回undefined。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:7)

来自AngularFire documentation for $add

var list = $firebase(ref).$asArray();
list.$add({ foo: "bar" }).then(function(ref) {
  var id = ref.key();
  console.log("added record with id " + id);
  list.$indexFor(id); // returns location in the array
});

如果您使用的是旧版AngularFire,该方法可能仍会被称为name,因此您需要var id = ref.name();

答案 1 :(得分:0)

现在push会返回Promise,因此更容易获得密钥:

constructor(private afDb: AngularFireDatabase) { }

  my_items$ : FirebaseListObservable<Item[]> = this.afDb.list('my-node');

  this.my_items$.push(this.item).then((item) => { 
    console.log(item.key); 
  });