Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 云功能firebase是否添加到cart-JS?_Reactjs_Firebase_Google Cloud Functions - Fatal编程技术网

Reactjs 云功能firebase是否添加到cart-JS?

Reactjs 云功能firebase是否添加到cart-JS?,reactjs,firebase,google-cloud-functions,Reactjs,Firebase,Google Cloud Functions,我正在尝试创建一个购物车,并使用redux saga将其保存到firebase。 我的手推车是这样的 { 产品:[ { 产品标识:“id1”, 产品名称:“产品1”, 产品数量:2, 产品价格:50, }, { 产品标识:“id2”, 产品名称:“产品2”, 产品数量:2, 产品价格:2, } ], userID:'user1' } firebase.js export const addToCartFirebase=(购物车)=>{ firestore.send(cart);//假的 };

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

{
产品:[
{
产品标识:“id1”,
产品名称:“产品1”,
产品数量:2,
产品价格:50,
},
{
产品标识:“id2”,
产品名称:“产品2”,
产品数量:2,
产品价格:2,
}
],
userID:'user1'
}
firebase.js

export const addToCartFirebase=(购物车)=>{
firestore.send(cart);//假的
};
cart.saga.js

导出功能*HandLeadToCart(操作){
const{cart}=动作;
const newCart=收益调用(addToCartFirebase,cart);
}

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

您实际上不需要为此使用云函数(如果这很重要,您可以这样做)。您只需获取现有的
用户
文档,并相应地更新
产品
数组。大概是这样的:

const addCart=异步产品{
const db=firestore().collection(userCollection);
const userSnap=await db.where(“userID”,“userID”,“user1”).get();
const userDoc=userSnap.docs[0]。是否存在?{id:userSnap.docs[0]。id,…userSnap.docs[0]。data()}:null;
如果(userDoc){//如果用户存在,则更新其产品数组
const products=userDoc.products.some(prod=>prod.product\u id==product.product\u id)
?userDoc.products.map(prod=>prod.product\u id===product.product\u id?({…prod,product\u数量:prod.product\u数量+1}):prod)
:
[…userDoc.products,product];
等待db.doc(userDoc.id).update({products});
}
否则{
const newUserData={userID:“user1”,产品:[product]};
等待db.add(newUserData);
}
}