如何从Google Cloud Tasks获取Firebase任务队列函数的自动生成任务名?
获取Firebase任务队列的任务名称并取消任务
默认调用taskQueue.enqueue()时,返回的Promise不会包含任务元数据,你需要在调用时添加returnTask: true配置项,让SDK返回完整的任务对象,其中就包含任务名称。
1. 入队时获取任务名称
调用enqueue方法时传入第二个参数配置returnTask: true,示例代码:
const admin = require('firebase-admin'); admin.initializeApp(); const taskQueue = admin.functions.taskQueue('your-queue-function-name'); async function addTaskToQueue() { // 传入任务负载和配置选项 const task = await taskQueue.enqueue( { payloadKey: 'payloadValue' }, // 你的任务数据 { returnTask: true } // 开启返回任务元数据 ); // 提取任务名称,格式为 projects/{项目ID}/locations/{区域}/queues/{队列名}/tasks/{任务ID} const taskName = task.name; // 将taskName存储到Firestore、实时数据库或其他存储系统,后续用于取消任务 console.log('已入队任务名称:', taskName); }
2. 使用任务名称取消任务
拿到存储的任务名称后,调用taskQueue.cancelTask()方法即可取消未执行的任务:
async function cancelTask(taskName) { try { await taskQueue.cancelTask(taskName); console.log('任务取消成功'); } catch (err) { // 任务已执行、不存在或无权限时会抛出错误 console.error('取消任务失败:', err.message); } }
注意:只有当任务仍处于队列等待状态时,取消操作才会生效。如果任务已经开始执行、执行完成或被删除,cancelTask会返回错误。
内容的提问来源于stack exchange,提问作者Rogier
相关产品推荐
相关产品推荐

