You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:21:05