默认情况下,父文档被标记为 "deleted"(斜体)

Parent document is being marked as "deleted" (italics) by default

我遇到了一个奇怪的问题,我们的父文档被标记为已删除。我正在插入这样的新文档:

const userDoc = admin.firestore().doc(`/user_bundles/${context.params.userId}/bundles/${chargeRecord.course_id}/media/${chargeRecord.media_type}`);
return userDoc.set(bundleDoc.data(), { merge: true });

但是,"chargeRecord.course_id" 文档被标记为已删除,导致查询为空。

我已经 运行 在另一个问答中解释了删除子集合时可能会发生这种情况。但需要明确的是,我们并没有删除这个文件。它是为用户新创建的。

文档和子集合不像文件系统文件和目录那样工作。

创建根据文档 ID 组织的子集合不会隐式创建任何父文档。子集合不以任何方式绑定到父文档,除非通过您强加的组织。在不存在的文档 ID 下组织子集合是完全有效的。

以斜体显示的文档 ID 不一定是 "deleted"。它们之所以以这种方式显示,是因为它们不存在,甚至可能从未存在过 - 您无法区分它们。

如果你想让任何文档存在,你必须编写一些代码来创建它并给它一些字段。如果您从未明确创建文档,那么它永远不会存在。

如果删除文档,其子集合仍然存在。