我有一个名为Inbox
的集合,其中包含多个文档。我正在尝试在其中一个inbox_documents
的新firestore子集合中创建一个新文档。新文档应具有一个自定义ID,在这里称为folder_id
。我的代码如下:
# Get the correct inbox document reference.
inbox_ref = fs_client.collection(u'inbox').document(self.inbox_id)
if not inbox_ref.get().exists:
raise ValueError("Referenced inbox does not exist.")
# Make a new document in the model collection and update it
# with the provided folder dictionary.
doc = inbox_ref.collection(u'folder').document(folder_id)
doc.set(folder_dict)
现在根据发现的文档here,我可以简单地将数据分配给集合中的文档。如果(子)集合不存在,Firestore应该自动为我创建它。 在this页面上,我找到了一个代码片段,该代码片段完全符合我想要完成的工作。
使用set()创建文档时,必须为要创建的文档指定ID。例如:
db.collection(u'cities').document(u'new-city-id').set(data)
它与我的代码几乎相同。但是由于某些原因,当我尝试运行代码时,出现以下 ValueError:文档必须具有偶数个路径元素。 我在线搜索了此错误,发现当提供的路径长度错误时,将引发此错误。但是我的道路似乎是正确的。
当我不给文档提供自定义ID时,只要让Firestore使用以下代码自动创建它,那么代码就可以工作,但显然使用自动生成的ID代替了我所需的自定义ID。
doc = inbox_ref.collection(u'folder').document()
doc.set(folder_dict)
我也尝试使用create()
代替set()
,但是没有运气。
我使用的是google-cloud-firestore python软件包,版本1.6.2。
关于我接下来可以尝试什么或我在做什么错的任何建议?
答案 0 :(得分:0)
根据您显示的内容,input1.transform.Find("Text").GetComponentInChildren<TMP_InputField>().text = source;
的值几乎可以肯定不是您所期望的。听起来您传递了一个空字符串。您应该使用日志语句或调试器来验证您是否确实在传递期望的值。
答案 1 :(得分:0)
文档ID不允许包含/
,这就是失败的原因,并给出了我的路径元素不均匀的错误。通过自动生成ID并在文档中为“真实” ID留有额外字段来解决此问题。