【发布时间】:2021-04-15 13:27:50
【问题描述】:
我的项目中有一个集合,我试图仅将相关文档提取到我的项目中。
我试图只获取包含登录用户的项目。 我只想获取用户数组中的一个 UID 与当前用户 UID 匹配的那些。
如何过滤查询以仅获取 SwiftUI 中的查询?
这是我获取项目的 ProjectRepository:
class ProjectRepository: ObservableObject
{
var userId = ""
private let fbAuth = FBAuth()
private var cancellables: Set<AnyCancellable> = []
private let store = Firestore.firestore()
@Published var projects: [Project] = []
init()
{
fbAuth.$user
.compactMap { user in
user?.uid
}
.assign(to: \.userId, on: self)
.store(in: &cancellables)
fbAuth.$user
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
self?.get()
}
.store(in: &cancellables)
}
// Retrieve projects from firebase
func get()
{
store.collection(FirestoreKeys.CollectionPath.projects)
.addSnapshotListener { querySnapshot, error in
if let error = error {
print("Error getting projects: \(error.localizedDescription)")
return
}
self.projects = querySnapshot?.documents.compactMap{ document in
try? document.data(as: Project.self)
} ?? []
}
}
// Add projects to firebase
func add(_ project: Project)
{
do {
_ = try store.collection(FirestoreKeys.CollectionPath.projects).addDocument(from: project)
} catch {
fatalError("Unable to add card: \(error.localizedDescription)")
}
}
}
【问题讨论】:
标签: swift firebase google-cloud-firestore