Firebase Functions 子集合新建文档时如何获取对应主集合文档数据
解决方案
- 你定义的触发器路径中已经声明了
{FeedDoc}通配符匹配父级Feed文档ID,可直接通过context.params.FeedDoc获取该ID值,拼接路径后即可读取父文档数据 - 也可以直接通过评论文档的引用向上遍历父级节点,无需手动拼接路径获取父文档引用
完整代码示例
const functions = require('firebase-functions'); const admin = require('firebase-admin'); // 初始化Admin SDK admin.initializeApp(); const db = admin.firestore(); exports.newComment = functions.firestore .document('Feed/{FeedDoc}/comments/{commentDoc}') .onCreate(async (snap, context) => { const commentData = snap.data(); // 原有评论数据 // 方法1:通过路径参数获取父文档ID后构造引用 const feedDocId = context.params.FeedDoc; const feedDocRef = db.doc(`Feed/${feedDocId}`); // 方法2:直接通过当前文档引用向上遍历获取父文档引用(无需依赖路径参数) // const feedDocRef = snap.ref.parent.parent; // 读取父文档数据 const feedDocSnap = await feedDocRef.get(); if (feedDocSnap.exists) { const feedDocData = feedDocSnap.data(); // 此处编写你的业务逻辑,feedDocData即为对应Feed父文档的全部数据 } // 返回处理结果避免云函数提前终止 return null; });
注意:云函数中执行异步读取操作时需正确处理Promise,上述示例使用async/await语法,你也可以替换为
.then()链式调用的写法。
内容的提问来源于stack exchange,提问作者Aakash Rathee
相关产品推荐
相关产品推荐

