首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云函数firebase加入购物车反应?

云函数firebase加入购物车反应?
EN

Stack Overflow用户
提问于 2020-08-12 16:04:59
回答 1查看 232关注 0票数 2

我正在尝试创建一个购物车,并使用redux-saga将其保存到firebase。我的手推车像这样

代码语言:javascript
复制
{
  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

代码语言:javascript
复制
export const addToCartFirebase = (cart) => {
  firestore.send(cart); //fake
};

cart.saga.js

代码语言:javascript
复制
export function* handleAddToCart(action) {
  const { cart } = action;
  const newCart = yield call(addToCartFirebase, cart);
}

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

EN

回答 1

Stack Overflow用户

发布于 2020-08-12 16:42:22

你并不真的需要使用云函数(如果这很重要,你可以使用)。您可以简单地获取现有的user文档并相应地更新products数组。如下所示:

代码语言:javascript
复制
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);
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63372337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档