Firebase通过子路径创建文档时父节点显示斜体及创建方法咨询
关于Firestore子路径文档与父文档显示的问题
首先解释你看到的斜体现象:Firestore控制台里显示为斜体的collection1和doc1,其实是幽灵文档/集合——它们本身没有存储任何实际数据,只是因为存在子文档doc2,控制台才会虚拟显示出这些父层级。这类幽灵层级不会被视为真正存在的文档/集合,比如你查询collection1下的文档时,doc1不会出现在结果里。
至于你问的“能不能在添加doc2的同时创建父文档doc1”,答案是:Firestore不会自动帮你创建父文档,必须显式执行创建操作。这里有两种靠谱的实现方式:
分步创建:先创建父文档(哪怕是空数据),再创建子文档
// 先创建父文档doc1,空对象也能让它成为真实存在的文档 await admin.firestore().collection("collection1").doc("doc1").set({}); // 再创建子文档doc2 await admin.firestore().collection("collection1/doc1/collection2").doc("doc2").set({ // 这里放你的子文档数据 name: "example", createdAt: admin.firestore.FieldValue.serverTimestamp() });批量写入:如果希望两个操作原子性完成(要么都成功,要么都失败),可以用Firestore的批量写入API
const batch = admin.firestore().batch(); // 添加父文档的创建操作 batch.set(admin.firestore().collection("collection1").doc("doc1"), {}); // 添加子文档的创建操作 batch.set(admin.firestore().collection("collection1/doc1/collection2").doc("doc2"), { // 子文档数据 content: "test content" }); // 提交批量操作 await batch.commit();
需要注意的是,父文档只需要有至少一个字段(哪怕是空对象{}),就能在控制台显示为正常样式,并且被视为真实存在的文档。如果你的业务逻辑不需要父文档存储任何数据,空对象完全够用。
内容的提问来源于stack exchange,提问作者meds
相关产品推荐
相关产品推荐

