升级Firebase后onUpdate触发器报错:'key'未定义,如何修复?
修复Firebase云函数升级后数据库触发器的'key'未定义问题
嘿,这个问题我熟!你升级到新版本Firebase组件后报错,核心原因是Firebase Functions v1.0.0对数据库触发器的API做了突破性更新,原来的event参数结构完全变了,所以event.data.key才会提示未定义。
给你直接上修复后的代码,再拆解下关键变化:
// 修复后的云函数 exports.OnBalanceChange = functions.database.ref('/balance/{userID}') .onUpdate((change, context) => { // 从context.params直接获取路径里定义的userID通配符,这是官方推荐的方式 const userid = context.params.userID; // 获取更新完成后的数据库快照 const eventSnapshot = change.after; console.log("user ID is", userid); // 云函数需要返回null或Promise,返回0可能导致执行异常,这里改成null return null; });
关键变化说明:
- 新版本的
onUpdate回调不再接收单个event参数,而是拆成了change和context两个参数 change对象包含两个快照:change.before(更新前的数据)和change.after(更新后的数据),替代了原来的event.data- 你在触发器路径里定义的
{userID}通配符,现在要从context.params.userID获取,这比从快照key读取更直接也更可靠 - 原来的
event.data.key对应现在的change.after.key,但这里你要的就是路径里的userID,直接用参数更准确 - 云函数的返回值必须是
null或者一个Promise,返回数字0不符合要求,会导致函数执行异常,所以改成return null
内容的提问来源于stack exchange,提问作者Marcos DaSilva
相关产品推荐
相关产品推荐

