如何在Firestore中搜索值

时间:2019-04-17 14:20:44

标签: firebase flutter

我有如下所示的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,并加载所有字段或仅加载“ username”字段?我用扑打

2 个答案:

答案 0 :(得分:0)

您可以使用当前用户的数据(电子邮件)来实现。 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
  }
});

答案 1 :(得分:0)

您要如何使用Firestore,可以使用下面的代码来使用。旧的Firebase是另一类。

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