У меня есть одна коллекция под названием Inbox
, в которой есть несколько документов. Я пытаюсь создать новый документ в новой коллекции поджогов в одной из этих inbox_documents
. Новый документ должен иметь собственный идентификатор, здесь он называется 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)
Теперь в соответствии с найденной документацией здесь Я могу просто назначить данные документу в коллекции. Если (под) коллекция не существует, Firestore должен автоматически создать ее для меня. На этой странице я нашел фрагмент кода, который делает именно то, что я хочу выполнить sh.
Когда вы используете set () для создания документа, вы должны указать Идентификатор документа для создания. Например:
db.collection(u'cities').document(u'new-city-id').set(data)
Это почти то же самое, что и мой код. Но по какой-то причине, когда я пытаюсь запустить свой код, я получаю следующее ValueError: В документе должно быть четное число элементов пути. Я искал эту ошибку в Интернете и обнаружил, что эта ошибка возникнет, когда указанный путь имеет неправильную длину. Но мой путь кажется правильным.
Когда я не даю пользовательский идентификатор для документа и просто позволяю Firestore создать его автоматически со следующим кодом, тогда код работает, но, очевидно, с автоматически сгенерированным Идентификатор вместо пользовательского идентификатора, который мне нужен.
doc = inbox_ref.collection(u'folder').document()
doc.set(folder_dict)
Я также пытался использовать create()
вместо set()
, но не повезло. Я использую пакет google-cloud-firestore python, версия 1.6.2.
Любые предложения о том, что я могу попробовать дальше или что я делаю здесь не так?