firebase - Firestore 文档/子集合不存在
问题描述
我有这个数据库结构:
Firestore-root
|
--- sites (collection)
| |
| --- common (document)
| |
| --- //templates (collection)
| |
| --- //menus (collection)
| |
| --- //articles (collection) <----
| --- other (document)
| |
| --- //articles (collection)
当我尝试将文章添加到数据库(如箭头所示)时,“common”和“other”- 文档是斜体的,因此不存在。
我尝试添加时的代码:优先级是常见的,类型是文章。
def documentReference = firestoreClient.databaseReference.collection(siteName).document(priority).collection(TYPE).document(key)
documentReference.set(article)
这是控制台:
这是构建我的数据库的坏方法还是有快速修复?
我曾尝试先创建子集合,但没有任何运气!
解决方案
Firebase 控制台并未指示您删除“常见”和“其他”文档。它告诉你它只是不存在。这些文档不存在,因为您根本没有创建它们。您所做的只是 在一个根本不存在的文档下创建一个子集合。换句话说,它只是为该集合中的文档“保留”一个 id,然后在其下创建一个子集合。通常,您应该只创建实际存在的文档的子集合,但这就是文档不存在时的样子。
要记住的一件事是,在 Cloud Firestore 中,文档和子集合不像文件系统文件和目录那样工作。如果您在文档下创建子集合,它不会隐式创建任何父文档。子集合不以任何方式绑定到父文档。
以斜体显示的文档 ID 不一定是“删除”。以这种方式显示它们是因为该文档不存在。换句话说,该位置没有物理文档,但该位置下有其他数据。
如果你想更正它,你必须至少编写一个可以保存值的属性。
PS 在 Firestore 中,如果你删除了一个文档,它的子集合仍然存在。
推荐阅读
- python - 使用 pymavlink 库接收和发送 mavlink 消息
- php - Zend3 表单过滤器 - ParamConverter 无法生成有效表单
- node.js - 了解 socket.io 向连接到套接字的特定用户广播消息
- openlayers - 是否可以在 OpenLayers 中为 ZoomToExtent 添加图标?默认为“E”
- python - 我们如何使用 open cv 在 python 中检测给定形状和颜色的对象?我不能同时做这两件事
- php - 用于查询构建器的 Sql - Symfony
- c# - 在 Entity Framework Core 中实例化 GUID 是不好的做法吗?
- ibm-cloud - 有没有办法在一次 api 调用中获得整合的 IBM Cloud 计费
- python - 在 Jupyter Windows 上使用 pool 并行读取多个文件需要很长时间:
- django - 通过 Django admin 删除对象时是否可以禁用相关对象的生成?