如何在 Firestore 中搜索值

Posted

技术标签:

【中文标题】如何在 Firestore 中搜索值【英文标题】:How to search a value in Firestore 【发布时间】:2019-09-07 19:56:29 【问题描述】:

我的 Firestore 数据库看起来像这样

- user
    - (document id)
        - userId: Rsa245156.....
        - username: user67
        - age: 23
        - address: Flamboyan Street No. 24
        - picture_path: ......

我从 Firebase Auth 中的 userId 创建了一个 userId,因此当登录的用户打开配置文件选项卡时,应用程序将在 Firestore 数据库中查找与登录的用户 userId 相同的 userId,并加载与该 userId 关联的所有字段。

问题是,我如何找到相同的 userId,并加载所有字段或仅加载“用户名”字段?我用颤振

【问题讨论】:

我已经按照这个方法***.com/q/48937864/10094689但是没有为类'Function'定义'listen' @anangfaturrohman 是的,你是对的。那个答案是不正确的。我在那里更新了它。它现在应该可以工作了。 Firestore queries on Flutter的可能重复 谢谢,这个方法会检查每个文件吗? 您使用的是实时数据库还是云数据库? 【参考方案1】:

您可以使用当前用户数据(电子邮件)来实现。 orderByChild 选择字段和equalTo方法比较值。

我希望以下示例对您有更多帮助。

FirebaseUser user = await FirebaseAuth.instance.currentUser(); // get the current users details
DatabaseReference ref = FirebaseDatabase.instance.reference();
ref.child('user')
    .orderByChild('userId')// userId contain the email id of users
    .equalTo(user.email) // if you login your user using email ID
    .onValue
    .listen((event) 
  DataSnapshot data = event.snapshot;
  var keys = data.value.keys;
  var todo = data.value;
  for (var key in keys) 
    _email= todo[key]['userId']; // get the email id
  
);

【讨论】:

谢谢,我试试【参考方案2】:

您想如何使用 Firestore,您可以使用下面的代码。 Old Firebase 是另一个类。

Firestore _firestore = Firestore.instance;
firestore.collection('user')
        .where('userId', isEqualTo: user.reference)
        .snapshots().listen((snapshot) 
           snapshot.documents.forEach((doc) 
              doc.data['username']
      )
    )

【讨论】:

以上是关于如何在 Firestore 中搜索值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firestore 在 Flutter 中搜索文本

如何在firestore中保存日期值

在进行身份验证之前,如何使用 Flutter 从 Cloud Firestore 搜索和访问数据?

如何读取地图中的 Firestore 值?

如何使用 Flutter 在 Firestore 中删除具有特定值的多个文档

如何使用 Flutter 在 Firestore 中检查多个文档中的特定值