【问题标题】:Updating User Data in Cloud Firestore在 Cloud Firestore 中更新用户数据
【发布时间】:2020-06-07 11:37:33
【问题描述】:

我在尝试更新已登录用户的数据时遇到问题。我有 uid,但 uid 和用户集合之间必须有联系,以便程序选择正确的用户进行更新,但我不知道如何制作。

这是我所拥有的:

FirebaseUser loggedInUser;
final _firestore = Firestore.instance;
//
double _latitude;
double _longitude;

void getCurrentLocation() async {
  try {
    Position position = await Geolocator()
      .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    setState(() {
      _latitude = position.latitude;
      _longitude = position.longitude;
    });
    _firestore
      .collection('users')
      .document('${loggedInUser.uid}')
      .updateData({'location': GeoPoint(_latitude, _longitude)});
  } catch (e) {
      print(e);
  }
}

这是我得到的:

E/flutter ( 9187): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(Error performing updateData, NOT_FOUND: No document to update: projects/app-#####/databases/(default)/documents/users/CGyByl58ELc0zirlVjJpv5OWAc42, null)

所以它使用了正确的 uid ("CGyByl58ELc0zirlVjJpv5OWAc42")

以下是 Firebase 的 身份验证 标签的屏幕截图:

但我想要得到的是数据库中这个用户的集合的名称:

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    用户 ID 与文档 ID 不同,这就是您收到该错误的原因,因为不存在带有 userId 的文档。您需要使用userId 作为文档ID:

    void addUser() async{
      var firebaseUser = await FirebaseAuth.instance.currentUser();
      Firestore.instance.collection("users").document(firebaseUser.uid).setData(
      {
        "age" : 38,
      }).then((_){
        print("success!");
      });
    }
    

    现在您将拥有 userId 作为文档 ID,您可以使用 userId 更新文档

    【讨论】:

    • 我认为这与我所拥有的相同,但您使用的是 firebaseUser = await FirebaseAuth.instance.currentUser 而不是我的 FirebaseUser loggedInUser; (); @Peter Haddad
    • @EliasMarrero 不同之处在于您使用的是updateData,而他使用的是setData。您不能更新不存在的数据
    • 问题是setData 使用该位置创建了一个新文档,而我要做的是更新现有用户的位置。 @JideGuru
    • 但是您已经创建了生成错误 id 的用户,对吧?您可能希望使用正确的 id 重新创建用户
    • 是的,正如答案中所说,您需要创建文档,但使用用户 ID 作为文档 ID,与答案相同,然后您的更新代码将起作用...现在根据您的图像您只是在生成一个随机 id,而不是使用 userID 作为文档 id...
    猜你喜欢
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2021-03-29
    • 2020-05-05
    • 2021-09-27
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多