Firebase Cloud Functions中FCM通知data字段条件添加报错求助
问题分析与解决办法
你遇到的问题有两个核心原因:
- 条件字段的展开语法逻辑存在问题,导致满足条件时字段也无法正确添加;
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
相关产品推荐
相关产品推荐

