Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 使用AngularFire从刚刚通过$add添加的元素中获取密钥_Firebase_Angularfire - Fatal编程技术网

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

Firebase 使用AngularFire从刚刚通过$add添加的元素中获取密钥,firebase,angularfire,Firebase,Angularfire,我正在将AngularFire与Firebase一起使用,希望获得我刚才通过$add()方法添加的元素的键。对于“香草”Firebase,有一种记录在案的方法可以做到这一点,请参阅“获取push()生成的唯一ID”。不过,它似乎不适用于AngularFire的等价物$id var ref = $firebase(firebaseData.ref()).$asArray(); var newItem = ref.$add({fruit: "apple", color: "red"}); var i

我正在将AngularFire与Firebase一起使用,希望获得我刚才通过
$add()
方法添加的元素的键。对于“香草”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...
newItem
已使用新密钥(例如
-Jf-06c0QX\u vMMNL3Aek
)成功添加到Firebase,但
itemId
返回未定义

有办法做到这一点吗?

来自:


如果您使用的是AngularFire的旧版本,那么该方法可能仍然被调用
name
,因此您需要
var id=ref.name()

现在
推送
返回一个
承诺
,因此更容易获得密钥:

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); 
  });
构造函数(专用afDb:AngularFireDatabase){}
my_items$:FirebaseListObservable=this.afDb.list('my-node');
this.my_items$.push(this.item).then((item)=>{
console.log(item.key);
});
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); 
  });