我想使用AngularFire2在firebase中增加记录,下面是我的方法:
const productsQuerry = this.af.database.list('/products/'+productKey,{ preserveSnapshot: true });
const productUpdate = this.af.database.list('/products');
productsQuerry.subscribe(snapshots => {
snapshots.forEach(snapshot => {
if (snapshot.key == "quantity") {
productUpdate.update(productKey,{quantity: snapshot.val()+1});
}
});
});
但是,这不仅仅是一次性地增加数量,而是产生无限循环和数量"记录变得太大了,
任何帮助人员?
非常感谢,
答案 0 :(得分:3)
问题在于您订阅了每个值的变化,这就是您进入无限循环的原因。尝试将take(1)添加到subscribe方法。
const productsQuerry = this.af.database.list('/products/'+productKey,{ preserveSnapshot: true });
const productUpdate = this.af.database.list('/products');
productsQuerry.subscribe(snapshots => {
snapshots.forEach(snapshot => {
if (snapshot.key == "quantity") {
productUpdate.update(productKey,{quantity: snapshot.val()+1});
}
});
}).take(1);
在这种情况下,它应该只取一次值。