从刚刚通过$ 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();
。
答
现在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);
});
正是我需要的,谢谢!猜猜我错过了那部分文档... – scferg5