#firebase #google-cloud-firestore
#firebase #google-облако-firestore
Вопрос:
У меня есть пакетную запись, которая выглядит следующим образом:
let newChatDocument = db.collection("chats").document()
let newMessageDocument = newChatDocument.collection("messages").document()
batch.setData(["chatName": "Test Chat"], forDocument: newChatDocument)
batch.setData(["sender": "user1", "content": "Hello!"], forDocument: newMessageDocument)
batch.commit()
Недавно я прочитал, что пакетные записи не выполняются последовательно, поэтому я не знаю, каким будет результат этой пакетной записи. Поскольку "messages"
коллекция является вложенной коллекцией "chat"
документа, мне нужно, чтобы сначала был создан документ чата.
Кто-нибудь может сказать мне, каким будет результат этой пакетной записи (будет ли она неудачной или будет успешной) с небольшим объяснением?
Заранее спасибо!
Комментарии:
1. Лучший способ — протестировать это в реальном мире и проверить, что и как происходит. И здесь проверьте эту ссылку для получения дополнительной информации. firebase.google.com/docs/firestore/manage-data/transactions
Ответ №1:
Поскольку коллекция «сообщения» является вложенной коллекцией документа «чат», мне нужно, чтобы сначала был создан документ чата.
На самом деле это не так. Родительские документы не обязательно должны существовать до создания документов во вложенных коллекциях в рамках этого документа. Документы не являются «контейнерами» для вложенных документов таким же образом, как папки в традиционной компьютерной файловой системе. Каждый документ существует полностью отдельно от других документов без каких-либо зависимостей между ними.
Конечным результатом этой пакетной записи является то, что будут созданы два ваших документа, и ошибок или неожиданных результатов не будет. Это должно быть легко попробовать самостоятельно.