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

Firebase Cloud Functions报错:类型'() => DocumentData'不存在属性'data'

解决Firebase Cloud Functions中event.data.data()报错的问题

兄弟,你遇到的这个错误是因为Firebase Cloud Functions版本更新导致了Firestore触发器的API结构变化,你参考的Demo用的是旧版本写法,和当前安装的新版本不兼容。

问题根源

在旧版本的Firebase Functions(比如v2及以前)中,Firestore触发器的回调参数是一个event对象,需要通过event.data()获取文档快照,再调用data()方法拿到数据:

// 旧版本废弃写法
const data = event.data().data();

但在新版本的Functions(v3+,当前主流版本)中,Firestore触发器的回调参数变成了两个参数:第一个是文档快照DocumentSnapshot,第二个是包含上下文信息的Context对象。原来的event.data逻辑被简化成直接传入的snap参数,不需要再额外调用一次data()函数获取快照,直接用snap.data()就能拿到文档数据。

具体修改步骤

把你的代码从旧写法调整为新版本兼容的写法:

报错的旧代码示例

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';

admin.initializeApp(functions.config().firebase);

exports.newSubscriberNotification = functions.firestore.document('subscribers/{subscriptionId}').onCreate((event) => {
  // 此处触发报错:Property 'data' does not exist on type '() => DocumentData'
  const subscriberData = event.data.data(); 
  // 后续业务逻辑...
});

修复后的新代码

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';

admin.initializeApp(); // 新版本无需传入functions.config().firebase,会自动完成初始化

exports.newSubscriberNotification = functions.firestore.document('subscribers/{subscriptionId}').onCreate((snap, context) => {
  // 直接通过snap.data()获取文档数据
  const subscriberData = snap.data(); 
  if (!subscriberData) {
    console.log("未获取到订阅者数据");
    return null;
  }
  // 如需获取路径参数(比如subscriptionId),可通过context.params获取
  const subscriptionId = context.params.subscriptionId;
  console.log(`新订阅者ID:${subscriptionId}`);
  // 你的通知推送等业务逻辑...
  return null;
});

其他触发器的适配说明

如果使用onUpdate、onDelete等其他Firestore触发器,参数结构同样需要调整:

  • onUpdate:回调参数为(change, context),change.before是更新前的文档快照,change.after是更新后的文档快照
  • onDelete:回调参数为(snap, context),snap是删除前的文档快照

修改完成后,重新部署Cloud Functions就能解决这个报错啦!

内容的提问来源于stack exchange,提问作者Daniel Hernandez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:10:59