【问题标题】:Cloud function firebase add to cart reactjs?云功能firebase添加到购物车reactjs?
【发布时间】:2020-12-01 22:55:27
【问题描述】:

我正在尝试创建一个购物车并使用 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.saga.js

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

我对 Firebase 很陌生。我如何让云函数接收购物车,如果它存在于数据库中,它只会增加产品的数量,如果购物车在数据库中不存在,它会创建一个新的

【问题讨论】:

    标签: reactjs firebase google-cloud-functions


    【解决方案1】:

    您实际上并不需要为此使用云功能(如果这很重要,您可以使用)。您可以简单地获取现有的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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多