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

scf*_*rg5 2 firebase angularfire

我正在使用AngularFire和Firebase,我想获得我刚刚通过该$add()方法添加的元素的键.有一种记录的方法可以使用"vanilla"Firebase执行此操作,请参阅此处的 "获取由push()生成的唯一ID" .但是,它似乎与AngularFire不相同$id.

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

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

有没有办法做到这一点?

Fra*_*len 7

来自$ addAngularFire文档:

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
});
Run Code Online (Sandbox Code Playgroud)

如果您使用的是较早版本的AngularFire,则可能仍会调用该方法,name因此您需要var id = ref.name();.