从刚刚通过$ add添加的元素中获取关键字使用AngularFire

问题描述:

我正在使用AngularFire和Firebase,并且想要通过$add()方法获取我刚刚添加的元素的关键字。有一种文档化的方式可以通过“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),但itemId返回未定义。

有没有办法做到这一点?

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();

+0

正是我需要的,谢谢!猜猜我错过了那部分文档... – scferg5

现在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); 
    });