我们最近开始使用Firebase Firestore开发适用于iOS的超级应用程序,我们需要存储并不断更新用户在Firebase上的位置,并使其保持位置,以便其他客户端也可以检索它。
我们正在尝试将用户位置存储在Firestore数据库上的用户自己的文档中,例如:
集合>用户>“ AutoGeneratedDocument”>用户位置 具有两个键值:纬度和经度。
我们在代码上取得了一些进展,当我们显式输入文档的路径时,它会写入位置数据,但是我们仍然不知道如何运行查询并查找用户自己的文档。
为了将位置数据保存到用户自己的文档中,我们需要能够获取当前登录用户的自动生成的用户文档路径。
到目前为止,我们已经提出了以下建议:
func updateUserLocation() {
let db = Firestore.firestore()
let locman = CLLocationManager()
locman.requestWhenInUseAuthorization()
var loc:CLLocation!
if CLLocationManager.authorizationStatus() == .authorizedWhenInUse || CLLocationManager.authorizationStatus() == .authorizedAlways{
loc = locman.location
}
let lat:Double = loc.coordinate.latitude
let long:Double = loc.coordinate.longitude
let geo = GeoPoint.init(latitude: lat, longitude: long)
let currentUID = currentUserUID
let val = db.collection("users").whereField("uid", isEqualTo: currentUserUID)
db.collection("users").document(val).updateData(["currentUserLocation" : geo])
}
我们希望获取包含已登录用户的UID的文档的路径,然后将用户位置键值存储在该特定文档中。但是对于我们的代码,在最后一行,document(val)部分需要一个字符串,但是带有“ whereField”方法的输出显然是一个查询。
答案 0 :(得分:0)
您经历过两次users
:
db.collection("users").whereField("uid", isEqualTo: currentUserUID).updateData(["currentUserLocation" : geo])
您可以在官方网站上找到许多有用的技巧和教程。 Perform simple and compound queries in Cloud Firestore