【发布时间】:2020-05-25 05:09:03
【问题描述】:
我正在开发一个简单的购物车应用程序。
我想添加/更新/删除用户购物车项目。
如果已经添加了项目,我只想更新数量而不是添加重复条目:
const arrayAdd = firebase.firestore.FieldValue.arrayUnion;
const arrayRemove = firebase.firestore.FieldValue.arrayRemove;
this.auth.uid.subscribe(uid => {
if (uid) {
this.firestore
.collection(`users`)
.doc(uid)
.valueChanges()
.subscribe((res) => {
this.getUserData = res;
if (this.getUserData.cart && this.getUserData.cart.length) {
const productExistInCart = this.getUserData.cart.find(({ productName }) => productName === product.productName);
if (!productExistInCart) {
this.firestore.doc(`users/${uid}`).update({ cart: arrayAdd(product) });
return
} else {
this.firestore.doc(`users/${uid}`).update({ cart: arrayRemove(productExistInCart) });
this.firestore.doc(`users/${uid}`).update({ cart: arrayAdd(product) });
return
}
} else {
this.firestore.doc(`users/${uid}`).update({ cart: [product] })
return
}
});
}
});
问题是,当我单击现有项目的addToCart 按钮时,我的数据库正在无限循环中更新,不确定我在这里做错了什么。请帮忙
【问题讨论】:
标签: angular typescript firebase google-cloud-firestore