第二代Firebase云函数中如何获取实时数据库操作的用户UID
在Firebase第二代云函数中获取实时数据库操作的用户UID
在第二代Firebase云函数(v2)中,实时数据库触发器的用户认证信息需要通过event对象的data.auth属性获取,替代第一代的context.auth.uid,具体实现步骤如下:
核心实现方式
- 使用第二代云函数的实时数据库触发器(如
onValueWritten、onValueCreated等)。 - 通过
event.data.auth?.uid获取触发操作的用户UID。
代码示例
import { onValueWritten } from "firebase-functions/v2/database"; export const trackDatabaseUserAction = onValueWritten("/your-target-path", (event) => { // 提取用户UID const userUid = event.data.auth?.uid; if (userUid) { console.log(`执行操作的用户UID: ${userUid}`); // 在这里添加你的业务逻辑处理 } else { console.log("该数据库操作未关联认证用户(比如管理员控制台操作、未授权访问)"); } });
关键注意事项
- 数据库规则限制:必须确保你的实时数据库规则要求用户认证后才能操作目标路径,否则
event.data.auth会返回null。示例规则如下:{ "rules": { "your-target-path": { ".write": "auth != null", ".read": "auth != null" } } } - 非用户触发的操作:如果是通过Firebase控制台、Admin SDK等无用户认证上下文的操作触发函数,
event.data.auth同样会是null,需要在代码中处理这种情况。
内容的提问来源于stack exchange,提问作者Benjamin Ting
相关产品推荐
相关产品推荐

