【发布时间】:2020-01-17 04:42:37
【问题描述】:
我们最近开始使用 Firebase Firestore 为 iOS 开发一个类似 uber 的应用程序,我们需要在 Firebase 上存储并不断更新用户的位置,以便其他客户端也可以检索它。
我们正在尝试将用户位置存储在 Firestore 数据库中用户自己的文档中,例如:
集合 > 用户 > "AutoGeneratedDocument" > UserLocation 具有纬度和经度两个键值。
我们在代码方面取得了一些进展,当我们明确输入它的文档路径时,它会写入位置数据,但我们仍然不知道如何运行查询并找到用户自己的文档。
为了将位置数据保存到用户自己的文档中,我们需要能够为当前登录的用户获取自动生成的用户文档路径。
到目前为止,我们已经想出了这个:
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”方法的输出显然是一个查询。
【问题讨论】:
标签: ios swift firebase google-cloud-platform google-cloud-firestore