Quiero crear una función que recorra una matriz y cree un nuevo documento en la base de datos de Firestore con una id y campos de quantity para cada elemento de la matriz, pero quiero que la función combine los documentos si ya hay otro documento con la misma identificación. existe probé el siguiente código:
useEffect(() => { !Locked && User && Uid && items && items.forEach(item=> User && db.collection("users").doc(Uid).collection("basket").add({ id : item.id, quantity : item.quantity }, {merge: true}) .then(setLocked(true)) ) }, [items, User,Locked,Uid]) pero no funcionó, entonces traté de cambiar el .add a .set pero muestra el siguiente error:
TypeError: _backend_firebase__WEBPACK_IMPORTED_MODULE_7__.db.collection(...).doc(...).collection(...).set is not a functionNo puede llamar a un set en una colección. Solo puede escribir en un documento dentro de esa colección.
Primero deberá usar una consulta para encontrar el documento duplicado y luego actualizar ese documento.
Si cada item.id tiene que ser único dentro de la basket de un usuario, considere usar el Id. del artículo como el Id. del documento, en lugar de llamar a add :
User && db.collection("users").doc(Uid).collection("basket").doc(item.id).set({ id : item.id, quantity : item.quantity }, {merge: true})Esto hace que sea mucho más fácil actualizar el documento más tarde, ya que puede volver a escribir en el documento en función de su ID de documento/elemento, en lugar de necesitar una consulta.