如何按文档 ID 从 Firebase Firestore 获取数据 - iOS?
Posted
技术标签:
【中文标题】如何按文档 ID 从 Firebase Firestore 获取数据 - iOS?【英文标题】:How to fetch data from Firebase Firestore by document ID - iOS? 【发布时间】:2021-01-12 16:32:14 【问题描述】:如何从 Firebase Firestore 中获取数据,而不是通过集合,而是从当前用户 (id) 中获取数据。 我有这段代码,但是当我添加“document(uid)”时,我收到错误消息
“无法将类型 'DocumentReference' 的值分配给类型 'CollectionReference'”
private var collectionRef: CollectionReference!
override func viewDidLoad()
super.viewDidLoad()
collectionRef = Firestore.firestore().collection("userInfo")
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
collectionRef.getDocuments (snapshot, error) in
if let err = error
debugPrint("error fetching docs: \(err)")
else
guard let snap = snapshot else
return
for document in snap.documents
let data = document.data()
let firstName = data[UserProfile.KEY_FIRST_NAME] as? String
let secondName = data[UserProfile.KEY_SECOND_NAME] as? String
self.namesLabel.text = firstName! + secondName!
print(document.data())
【问题讨论】:
你在哪里做'''document(uid)'''?只是为了检查,查询必须遵循集合 -> 文档集合 -> 文档等模式。所以如果你只是尝试'''Firestore.firstore().document(uid)''',那是行不通的 collectionRef = Firestore.firestore().collection("userInfo") --> 我在这里添加了“document(uid)”,但我收到一条错误消息“无法分配'DocumentReference'类型的值输入“CollectionReference”,所以我删除了 哦,因为你将collectionRef
的类型定义为CollectionReference
,上面viewDidLoad
那么,如何解决这个问题?去掉它?如果我删除它,那么我应该调用什么函数?
嗯,这正是您问题中的代码所做的。您使用此 collectionRef = Firestore.firestore().collection("userInfo")
创建对 userInfo 集合的引用,然后使用此 collectionRef.getDocuments
获取该集合中的所有文档。那里做得很好。什么不工作?顺便说一句,在回复 cmets 中的某人时,为了引起他们的注意,请在他们的名字前添加一个 @。喜欢@ifF3
【参考方案1】:
当视图在viewWillAppear
上启动时,您正在尝试读取信息,而您等待viewDidLoad
设置应从中检索信息的收集路径,基本上这样做:
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
collectionRef = Firestore.firestore().collection("userInfo") // This line
collectionRef.getDocuments (snapshot, error) in
if let err = error
debugPrint("error fetching docs: \(err)")
else
guard let snap = snapshot else
return
for document in snap.documents
let data = document.data()
let firstName = data[UserProfile.KEY_FIRST_NAME] as? String
let secondName = data[UserProfile.KEY_SECOND_NAME] as? String
self.namesLabel.text = firstName! + secondName!
print(document.data())
【讨论】:
以上是关于如何按文档 ID 从 Firebase Firestore 获取数据 - iOS?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase 获取按变量排序的文档(文档名称未知)[关闭]
Firebase.db.collection 不是函数 || Firebase v9 ||将集合文档设置为状态时引发错误