Estoy tratando de actualizar un campo timestamp
con el Firestore
marca de tiempo del administrador en una colección con más de 500 documentos.
const batch = db.batch();
const serverTimestamp = admin.firestore.FieldValue.serverTimestamp();
db
.collection('My Collection')
.get()
.then((docs) => {
serverTimestamp,
}, {
merge: true,
})
.then(() => res.send('All docs updated'))
.catch(console.error);
Esto arroja un error
{ Error: 3 INVALID_ARGUMENT: cannot write more than 500 entities in a single call
at Object.exports.createStatusError (C:\Users\Growthfile\Desktop\cf-test\functions\node_modules\grpc\src\common.js:87:15)
at Object.onReceiveStatus (C:\Users\Growthfile\Desktop\cf-test\functions\node_modules\grpc\src\client_interceptors.js:1188:28)
at InterceptingListener._callNext (C:\Users\Growthfile\Desktop\cf-test\functions\node_modules\grpc\src\client_interceptors.js:564:42)
at InterceptingListener.onReceiveStatus (C:\Users\Growthfile\Desktop\cf-test\functions\node_modules\grpc\src\client_interceptors.js:614:8)
at callback (C:\Users\Growthfile\Desktop\cf-test\functions\node_modules\grpc\src\client_interceptors.js:841:24)
code: 3,
metadata: Metadata { _internal_repr: {} },
details: 'cannot write more than 500 entities in a single call' }
¿Hay alguna manera de que pueda escribir un método recursivo que cree un objeto por lotes actualizando un lote de 500 documentos uno por uno hasta que se actualicen todos los documentos?
De los documentos, sé que la operación de eliminación es posible con el enfoque recursivo como se menciona aquí:
https://firebase.google.com/docs/firestore/manage-data/delete-data#collections
Pero, para actualizar, no estoy seguro de cómo finalizar la ejecución ya que los documentos no se eliminan.
¿Por qué no itera a través de todos los 500 documentos, actualiza y usa la última clave de documento para construir startAt para crear una nueva consulta?
– Borko Kovacev
4 sep 2018 a las 11:40
Puede limitar y luego procesar por lotes recursivamente, enfrentó el mismo problema y esta fue mi solución: stackoverflow.com/a/61639536/2195000
– Stathis Ntonas
7 de mayo de 2020 a las 7:14