如何在子集合子文档创建时触发Firestore云函数并获取数据
代码问题分析与修正方案
原代码问题点
你打印数据时逻辑错误:payerDocID是字符串类型的文档唯一ID,本身不存在amountToPay属性,你错误将ID变量当做文档数据对象调用字段,导致输出不符合预期。
修正后可运行代码
exports.createPayers = functions.firestore .document("/pledges/{id}/payto/{payDocID}") .onCreate(async (snap, context) => { console.log("This is working"); // 获取新创建payto子文档的ID const payerDocID = snap.id; // 获取子文档本身(快照对象,包含元数据、字段操作等所有能力) const payerDoc = snap; // 获取子文档所有字段数据(对象格式,包含你存储的所有键值对) const payerDocData = snap.data(); // 单独提取amountToPay字段 const amountToPay = payerDocData?.amountToPay; // 测试打印 console.log("新文档ID:", payerDocID); console.log("新文档全量数据:", payerDocData); console.log("待支付金额:", amountToPay); // 如果需要获取父级pledges文档的ID,可从通配符参数取:const pledgeId = context.params.id // 后续业务逻辑写在此处 return null; });
补充说明
- 路径里定义的所有通配符参数都可以从
context.params对象中获取,比如父级pledges文档的ID对应context.params.id - 调用
snap.data()时添加可选链操作符?.可以避免空值异常
内容的提问来源于stack exchange,提问作者Dijiflex
相关产品推荐
相关产品推荐

