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

Firebase Cloud Functions中FCM通知data字段条件添加报错求助

问题分析与解决办法

你遇到的问题有两个核心原因:

  1. 条件字段的展开语法逻辑存在问题,导致满足条件时字段也无法正确添加;
  2. liveroomId可能不是字符串类型,而FCM的data字段要求所有值必须为字符串类型。

正确代码示例

const message = <admin.messaging.Message>{
  notification: {
    title: title,
    body: body,
  },
  android: {
    priority: "high",
  },
  data: {
    "type": notificationType,
    // 用三元运算符替代&&,确保条件不满足时返回空对象,避免展开错误值
    ...(notificationType === notificationTypes.liveRoomAccepted ? {
      "liveroom-id": liveroomId.toString() // 强制转为字符串,符合FCM数据格式要求
    } : {})
  },
  apns: {
    headers: {
      "apns-priority": "10",
    },
    payload: {
      aps: {
        "contentAvailable": true,
      },
    },
  },
  token: token,
};

关键修改说明

  • 修复条件展开逻辑:原写法用&&连接,当条件不满足时会返回false,对象展开...false不会添加任何字段,且语法逻辑不严谨。改用三元运算符后,条件满足时返回包含目标字段的对象,不满足时返回空对象,确保展开逻辑稳定。
  • 强制字符串转换:FCM的data字段对数据类型有严格要求,所有值必须是字符串。因此需要通过toString()将liveroomId强制转换为字符串类型,无论它原本是数字还是其他类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:10:28