【问题标题】:iOS Storing/Updating and retrieving location data from user document Firebase FirestoreiOS 从用户文档 Firebase Firestore 存储/更新和检索位置数据
【发布时间】: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


    【解决方案1】:

    你正在经历两次users

    db.collection("users").whereField("uid", isEqualTo: currentUserUID).updateData(["currentUserLocation" : geo])
    

    您可以在官方网站上找到许多有用的提示、教程。 Perform simple and compound queries in Cloud Firestore

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 2018-07-13
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多