如果我知道一个字段的值,如何获取FireStore文档的ID?(以Swift格式)
我正在用Swift编程,我有一个小问题 我想知道如果我有文档中某个字段的值,如何获取文档的ID 小例子:如果我知道一个字段的值,如何获取FireStore文档的ID?(以Swift格式),swift,google-cloud-firestore,Swift,Google Cloud Firestore,我正在用Swift编程,我有一个小问题 我想知道如果我有文档中某个字段的值,如何获取文档的ID 小例子: document_x -> name: x, number: 5 document_y -> name: y, number: 2 document_z -> name: z, number 16 现在我知道我需要文档的ID,它的名称是:z(在本例中为documentz) 这可能吗?几个月前我也遇到了同样的问题。fire base正在生成随机文档id,因为没有提供特定
document_x -> name: x, number: 5
document_y -> name: y, number: 2
document_z -> name: z, number 16
现在我知道我需要文档的ID,它的名称是:z(在本例中为documentz)
这可能吗?几个月前我也遇到了同样的问题。fire base正在生成随机文档id,因为没有提供特定id。 这有两种方法: 第一个:这是我如何找到我的文档id w.r.t的字符串,我已经在它
private func GetFireBaseID(_ ComingToBeDel : String , completion:@escaping(String) -> ()) {
db.collection(FireBaseConstant.ProjectCollectioName).getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
let currentdata = document.data()
if let currenttitle = currentdata[FireBaseConstant.ProjectVC.ProjectName] as? String {
if currenttitle == ComingToBeDel {
completion(document.documentID)
break
}else {
completion("")
}
}
}
}
}
}
打电话的人是这样的
GetFireBaseID(filterobj[index].ProjectTitle) { (returnid) in
if returnid.count > 0 {
db.collection(FireBaseConstant.ProjectCollectioName).document(returnid).updateData([
FireBaseConstant.ProjectVC.ProjectName : string
])
}else {
print("couldnt find your file")
}
}
第二种方法可以使用whereField筛选查询。有关此方法,请参阅以下链接。
要在字段中查找与特定值匹配的文档,您可以。大概是这样的:
let query = collectionRef.whereField("name", isEqualTo: "z")
query.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
}
}
}
顺便说一句:我正在使用SwiftIt,这是Firebase的一个大问题。一种常见的解决方案是将文档ID作为字段实际存储在文档中!!因此,每当您创建一个新文档(例如,添加一个用户)时,您实际上会获得文档id并将其作为一个字段添加到其中,可能名为“thisDocId”!