云功能firebase添加到cart reactjs



我正在尝试创建一个购物车,并使用redux saga将其保存到firebase。我的购物车喜欢这个

{
products: [
{
product_id: 'id1',
product_name: 'product 1',
product_quantity: 2,
product_price: 50,
},
{
product_id: 'id2',
product_name: 'product 2',
product_quantity: 2,
product_price: 2,
}
],
userID: 'user1'
}

firebase.js

export const addToCartFirebase = (cart) => {
firestore.send(cart); //fake
};

cart.sag.js

export function* handleAddToCart(action) {
const { cart } = action;
const newCart = yield call(addToCartFirebase, cart);
}

我是个新手。我如何让云功能接收购物车,如果它存在于数据库中,它只会增加产品的数量,如果购物车不存在于数据库,它会创建一个新的

您实际上不需要为此使用云函数(如果这很重要,您可以使用(。您可以简单地获取现有的user文档并相应地更新products数组。类似这样的东西:

const addCart = async product {
const db = firestore().collection(userCollection);
const userSnap = await db.where("userID", "==", "user1").get();
const userDoc = userSnap.docs[0].exists ? { id: userSnap.docs[0].id, ...userSnap.docs[0].data() } : null;
if (userDoc) { // If user exists, update his products array
const products = userDoc.products.some(prod => prod.product_id === product.product_id)
? userDoc.products.map(prod => prod.product_id === product.product_id ? ({ ...prod, product_quantity: prod.product_quantity + 1 }) : prod)
:
[ ...userDoc.products, product ];
await db.doc(userDoc.id).update({ products });
}
else {
const newUserData = { userID: "user1", products: [product] };
await db.add(newUserData);
}
}

相关内容

  • 没有找到相关文章

最新更新