На данный момент я понял, что когда пользователь нажимает кнопку, все документы в FirstCollection затем копируются в коллекцию под названием SecondCollection, которая хорошо работает!
Что я 'Теперь я хотел бы использовать значение Int из поля (numberValue) во всех документах из вновь созданной коллекции под названием SecondCollection.Затем используйте эти значения для создания нескольких документов во вложенной коллекции с именем «SecondSubCollection» документа.
Так, например, скажем, если numberValue равно 3 в одном документе, я хотел бы выполнить пакетный запрос и создать3 документа под вложенной коллекцией под названием «SecondSubCollection» документа.Затем сделайте это для всех документов в SecondCollection одним запросом.
Пожалуйста, посмотрите код ниже того, что я получил до сих пор.В тот момент, когда я нажимаю на кнопку, он создает только один документ в каждой из подколлекций, что не работает так, как я хочу.Я бы хотел, чтобы он создавал несколько документов (если numberValue равно 3 в документе, он должен создавать 3 документа во вложенной коллекции документа).
Надеюсь, это имеет больше смысла!Любая помощь будет принята с благодарностью, спасибо !!
Код
@IBAction func goButton(_ sender: UIButton) {
let userRef = db.collection("Users").document(user!)
userRef.collection("SecondCollection").document(firstID).setData(["name" : "name"]) {
error in
if let error = error {
print("Error adding document: \(error.localizedDescription)")
} else {
print("Document added with ID")
}
}
let firstRef = userRef.collection("FirstCollection")
firstRef.getDocuments { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
if let snapshot = querySnapshot {
for document in snapshot.documents {
let data = document.data()
let name = data["name"] as? String ?? ""
let numberValue = data["numberValue"] as? Int ?? Int()
let batch = self.db.batch()
let docset = querySnapshot
let integerArray = [Int](1...numberValue)
let secondID = UUID().uuidString
let secondRef = userRef.collection("SecondCollection").document(secondID)
docset?.documents.forEach {_ in batch.setData(["name" : name, "numberValue" : numberValue], forDocument: secondRef)}
\\ the code that isn't working properly at the moment
let secondSubRef = secondRef.collection("SecondSubCollection").document()
docset?.documents.forEach {integerArray in batch.setData(["value" : Int], forDocument: secondSubRef)}
batch.commit(completion: { (error) in
if let error = error {
print("\(error)")
} else {
print("success")
}
})
}
}
}
}
}
Что она делает в данный момент
FirstCollection :
- documentID.
- name: name.
- numberValue: 3.
- documentID.
- имя: имя.
- число Значение: 2.
SecondCollection :
- documentID.
- имя: имя.
- числоЗначение: 3.
- SecondSubCollection .
- documentID.
- name: name.
- numberValue: 2.
- SecondSubCollection .
Что бы янравится делать
FirstCollection :
- documentID.
- имя: имя.
- номер Значение: 3.
- documentID.
- имя: имя.
- число Значение: 2.
SecondCollection :
- documentID.
- name: name.
- numberValue: 3.
- SecondSubCollection .
- documentID.
- documentID.
- documentID.
- documentID.
- имя: имя.
- число Значение: 2.
- SecondSubCollection .