如何在onDocumentCreatedWithAuthContext中获取认证用户的Profile文档
获取认证用户UID的方法
在onDocumentCreatedWithAuthContext触发器中,触发事件的认证用户UID可以直接通过event.authContext.uid获取。
修改后的完整可运行代码如下:
const { onDocumentCreatedWithAuthContext, FieldValue } = require("firebase-functions/v2/firestore"); const { getFirestore } = require("firebase-admin/firestore"); const db = getFirestore(); exports.onSubmissionLikeDocumentCreated = onDocumentCreatedWithAuthContext( "submission/{submissionId}/like/{likeId}", (event) => { const batch = db.batch(); const submissionReference = db.doc(`submission/${event.params.submissionId}`); // 更新投稿的点赞数 batch.update( submissionReference, { likesCount: FieldValue.increment(1) } ); // 核心:从认证上下文获取当前用户UID const uid = event.authContext.uid; const userProfileRef = db.doc(`profile/${uid}`); // 更新用户的点赞投稿列表 batch.update( userProfileRef, { likedSubmissionReferences: FieldValue.arrayUnion(submissionReference), } ); // 补充点赞文档的元数据 const reference = event.data.ref; batch.set( reference, { reference, createdAt: FieldValue.serverTimestamp(), }, { merge: true } ); return batch.commit(); }, );
重要说明
onDocumentCreatedWithAuthContext是专门为需要访问认证信息的场景设计的触发器,只有当触发操作的请求来自已认证的Firebase用户时,event.authContext才会包含有效的uid。- 建议添加空值判断逻辑(比如检查
uid是否存在),避免未认证用户触发时出现错误。
内容的提问来源于stack exchange,提问作者gd08xxx
相关产品推荐
相关产品推荐

