【发布时间】:2019-03-04 17:31:36
【问题描述】:
我有一个函数,它返回一个布尔值来检查用户是否已经在帖子上投票。但是,我正在努力让正确的布尔值返回。我运行 Firebase 查询来检查后端中的数据,但始终返回 false 的默认布尔值。解决这个逻辑的最佳方法是什么?
我明白为什么它默认为 false:我将它设置在块上方,然后代码在查询完成之前点击 return false。最好的方法是什么?
func didAlreadyVote(message: MessageType) -> Bool {
// check user votes collection to see if current message matches
guard let currentUser = Auth.auth().currentUser else {return false}
let userID = currentUser.uid
var bool = false
let docRef = Firestore.firestore().collection("users").document(userID).collection("upvotes").whereField("messageId", isEqualTo: message.messageId)
docRef.getDocuments { querySnapshot, error in
if let error = error {
print("Error getting documents: \(error)")
bool = false
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
bool = true
}
}
}
return bool
}
【问题讨论】:
-
完成块?