Estoy tratando de crear una tabla de clasificación para mi aplicación que debería reescribirse cada 24 horas, pero no puedo hacer que funcione... El trabajo ni siquiera comienza.
Esto es todo lo que encontré sobre la función, pero no me ayuda. https://firebase.google.com/docs/functions/schedule-functions
Y esta es mi función:
exports.leaderboardjob = functions.region('europe-west1').pubsub.schedule( '0 0 * * *').onRun(async (context) => { await leaderboard(); console.log("job done"); return null; }); async function leaderboard(){ const rdb = admin.firestore(); const ref = rdb.ref('users'); try { await ref.orderByChild('xp').limitToLast(2).on('child_added', (snapshot) => { //test first with 2 results console.log(snapshot.key); }); } catch (error) { console.log('error: ' + error.message); } return{ result: ok } }Ya moví la función a mi región europe-west1 como todas mis otras funciones.
error que recibo cuando llamo a esta función (leaderboardjob) manualmente:
{"@type":"type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished", "jobName":"projects/censored/locations/europe-west1/jobs/firebase-schedule-leaderboardjob-europe-west1", "pubsubTopic":"projects/censored/topics/firebase-schedule-leaderboardjob-europe-west1", "status":"UNAUTHENTICATED", "targetType":"PUB_SUB"}Tal vez simplemente no sea posible, si no: ¿alguien puede explicarme cómo realizar algo como esto con funciones?
EDITAR: Olvidé decir que le di a la función el rol con una nueva cuenta "pubsub.subscriber"
Acabo de eliminar toda la función y la probé con un nuevo nombre.
No sé por qué, pero esto funcionó...
Ni siquiera necesita agregar un rol. Todo funciona bien.