云功能firebase添加到购物车reactjs?

Posted

技术标签:

【中文标题】云功能firebase添加到购物车reactjs?【英文标题】:Cloud function firebase add to cart 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 很陌生。我如何让云函数接收购物车,如果它存在于数据库中,它只会增加产品的数量,如果购物车在数据库中不存在,它会创建一个新的

【问题讨论】:

【参考方案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);
  

【讨论】:

以上是关于云功能firebase添加到购物车reactjs?的主要内容,如果未能解决你的问题,请参考以下文章

将 Firebase FCM 添加到 reactjs 应用程序

如何触发 Firebase 云功能以添加用户、生成密码并使用该密码发送邮件

如何使用 Firebase 云存储添加图像存储功能?

如何在 Firebase 的云功能中添加版本

在reactjs中解析firebase查询数据

reactjs 项目使用 iconfont 小图标