【发布时间】:2022-02-09 23:37:33
【问题描述】:
我正在尝试为我的应用程序实现一个排行榜,该排行榜应该每 24 小时重写一次,但我无法让它工作......这项工作甚至没有开始。
这就是我找到的有关该功能的全部内容,但对我没有帮助。 https://firebase.google.com/docs/functions/schedule-functions
这是我的功能:
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
}
}
我已经将该功能移至我的区域 europe-west1,就像我的所有其他功能一样。
当我手动调用此函数 (leaderboardjob) 时返回的错误:
{"@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"}
也许它只是不可能,如果不是:有人可以解释我如何用函数实现这样的事情吗?
编辑:我忘了告诉这个函数,我用一个新帐户“pubsub.subscriber”赋予了这个角色
【问题讨论】:
-
我找到了这个相关的博客关于如何schedule Cloud Functions for Firebase (cron),它还提供了一个sample in GitHub。
标签: javascript node.js firebase-realtime-database google-cloud-platform google-cloud-functions