Recibo el siguiente error cuando intento escribir en Firestore. Esto se hace en JavaScript (Reaccionar). ¿Alguien puede decir qué es esto y cómo puedo solucionarlo?
@firebase/firestore: Firestore (8.3.1): RestConnection Commit failed with error: {"code":"failed-precondition","name":"FirebaseError"} url: https://firestore.googleapis.com/v1/projects/{project name}/databases/(default)/documents:commit request: {"writes":[{"update":{"name":"projects/{project name}/databases/(default)/documents/teams/T22yKl1ERQSlfuZNitrvs2vRjSJ2/team-analytics/T22yKl1ERQSlfuZNitrvs2vRjSJ2-Dec-22-2021","fields":{"homePageViews":{"integerValue":"3"},"timeModified":{"timestampValue":"2021-12-22T09:32:00.000000000Z"}}},"updateMask":{"fieldPaths":["homePageViews","timeModified"]},"currentDocument":{"updateTime":"2021-12-22T09:23:08.916511000Z"}}]}Mi código que intenta acceder a Firestore se muestra a continuación:
return db.runTransaction(async (transaction) => { const analyticsDoc = await transaction.get(analyticsReference); if (analyticsDoc.exists) { const analytics: any = analyticsDoc.data(); return transaction.update(analyticsReference, { homePageViews: analytics.homePageViews + 1, timeModified: getCurrentDateTime() }); } const newAnalytics: AnalyticsObject = { totalViews: 0, homePageViews: 1, timeModified: getCurrentDateTime(), }; return transaction.set(analyticsReference, newAnalytics); });También recibo el siguiente error en mi consola:
POST https://firestore.googleapis.com/v1/projects/optimx-sports/databases/(default)/documents:commit 400Editar: después de investigar más, creo que podría deberse a que estoy enviando 2 transacciones al mismo documento simultáneamente. ¿Es posible que este error se deba a esto?
El problema era que estaba enviando dos confirmaciones de transacciones a un documento de Firestore en un segundo. La segunda confirmación estaba generando el error anterior. Se solucionó combinando los dos compromisos.
A continuación hay algunos puntos con los que puede verificar:
En Cloud Firestore, solo puede actualizar un solo documento aproximadamente una vez por segundo, lo que podría ser demasiado bajo para algunas aplicaciones de alto tráfico. Echa un vistazo a la documentación de Firestore .
Puede consultar laDocumentación .
También puede probar con Postman API para acceder a los datos.
Otra forma es combinar dos confirmaciones también.