我正在将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。
有办法做到这一点吗?
答案 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);
});