【问题标题】:how to get data from cloud firestore where user.uid equal to document id in flutter?如何从 Cloud Firestore 中获取数据,其中 user.uid 等于 Flutter 中的文档 ID?
【发布时间】:2020-05-11 15:54:26
【问题描述】:

我有这个显示用户信息的个人资料屏幕。 用户通过身份验证后,我将数据存储在云 Firestore 中,文档 ID 等于用户 ID。 现在,我想从 cloud firestore 中检索当前 userId 等于文档 id 的数据。

现在我有这个:

class UserManagement {
  getData() async{
    String userId = (await FirebaseAuth.instance.currentUser()).uid;
    print(userId);
    return Firestore.instance.collection('users').document(userId);

  }

但是当我注销并以不同的用户重新登录后它显示相同的数据后,这无法正常工作。

UserManagement().getData().then((results) {
    setState(() {
      userFlag = true;
       users = results;
    });
    });

现在,如何获取姓名、电子邮件、课程、电话号码等其他字段 并且所有值都存储到 user.right 中?

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore firebase-authentication


    【解决方案1】:

    如果您的 Firestore 中的文档 ID 等于 Firebase 身份验证控制台中的 userid,那么您需要先检索 uid 并将其作为参数传递给方法 document()

    getData() async{
        String userId = (await FirebaseAuth.instance.currentUser()).uid;
        return Firestore.instance.collection('users').document(userId);
      }
    

    【讨论】:

    • 那么在配置文件中我必须进行哪些更改? UserManagement().getData().then((QuerySnapshot docs){ userFlag = true; users = docs.documents[users.userId].data; });
    • 如果文档ID与当前用户登录ID相同,那么可以使用UserId轻松获取任何文档
    • 有什么问题
    • Firestore.instance .collection('users') .document(userId) .get() .then((DocumentSnapshot ds) { // use ds as a snapshot ds['name'] });
    • 要获取其他字段,请检查上面评论中的代码 ^
    【解决方案2】:

    您的查询正在获取“userData”集合中的所有文档,然后从整个集合中挑选出第一个文档。对于对该集合具有读取权限的所有用户,这将是同一组文档。我不明白为什么您会期望不同的用户会得到不同的结果。也许您打算为给定用户 ID 的用户访问单个文档,而不是访问所有文档。如果是这种情况,您应该通过其 ID 请求该文档,Firestore.instance.collection('userData').document(uid)' whereuid` 是当前登录用户的 ID。

    此外,您的代码正在查询一个名为“userData”的集合,但您的屏幕截图显示了一个名为“users”的集合,因此令人困惑。

    【讨论】:

    • 你的意思是我的 getData 函数看起来像这样?:getData(String uid){ return Firestore.instance.collection('users').document(uid); }
    • 我不知道 - 这符合您的要求吗?你的问题不是很清楚你的目标是什么。
    • 如何获取当前用户的uid? FireBase 用户 = FirebaseAuth.instance.currentUser();
    • 我的目标是从 Firestore 中检索文档 ID 等于当前用户 uid 的数据。
    猜你喜欢
    • 2020-12-05
    • 2021-05-27
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2023-03-28
    • 2019-05-05
    相关资源
    最近更新 更多