현재 특정 사용자 이름으로 사용자를 찾으려고 시도하는 데이터를 쿼리하는 Firestore 데이터베이스 참조가 있습니다. 사용자를 얻은 후에 로그인하려고합니다. 그러나 사용자를 쿼리하는 코드 블록이 호출되는 즉시 반환되는 것으로 나타났습니다. 완료 블록을 추가하거나 적어도 쿼리가 완료 될 때까지 프로그램을 중지하는 방법이 있습니까?Firestore 쿼리에서 완성 블록을 가질 수 있습니까?
u.name = name
global.db.collection("users").whereField("username", isEqualTo: u.name).getDocuments(completion: { (snap, error) in
if error != nil {
print(error?.localizedDescription as Any)
return
}
for doc in (snap?.documents)! {
u.email = doc.data()["email"] as! String
}
})
Auth.auth().signIn(withEmail: u.email, password: password, completion: { (user, error) in
if error != nil {
print(error?.localizedDescription as Any)
return
}
print("Succesfully Logged In")
self.toListSelector(user: u)
})
이 https://i.stack.imgur.com/hI1iY.png
코드에 완성 블록이 이미 있습니다. 즉,'snap? .documents'를 반복합니다. 조쉬가 대답 한대로'Auth.auth(). signIn' 코드 **를 ** 콜백 블록으로 옮기고 자 할 것입니다. –