如何在 firestore flutter 中访问过滤器查询的数据?

How to access data of a filter query in firestore flutter?

我想通过他的手机号码搜索用户。如果用户找到,则显示他的其他信息,如姓名。

搜索查询工作正常。但我无法访问数据。下面是我获取查询结果的函数。当我打印数据时,它只打印 ['QueryDocumentSnapshot']

的实例
  getData() async {
    final QuerySnapshot result = await FirebaseFirestore.instance
        .collection('CommonData')
        .where(
          'Mobile_Number',
          isEqualTo: mobileNumber,
        )
        .get();
    final List<DocumentSnapshot> resultDocument = result.docs;
    
    print(resultDocument);
  }

试试这个

getData() async {
  String mobile_number;
  String name;
  String surname;

  final QuerySnapshot result = await FirebaseFirestore.instance
      .collection('CommonData')
      .where(
        'Mobile_Number',
        isEqualTo: mobileNumber,
      )
      .get();
  result.docs.forEach((value) {
    mobile_number = value.data()['Mobile_Number'];
    name = value.data()['Name'];
    surname = value.data()['SurName'];
  });

  print("Mobile Number: " + mobile_number);
  print("Name: " + mobile_number);
  print("SurName: " + mobile_number);
}

由于您假设您的数据库确实包含一个且每个手机号码只有一个用户,因此您可能想要强制执行此假设:

Future<Map<String, dynamic>> getData(String mobileNumber) async {
  return FirebaseFirestore.instance
      .collection('CommonData')
      .where(
        'Mobile_Number',
        isEqualTo: mobileNumber,
      )
      .get()
      .then((snapshot) => snapshot.docs.single.data())
      .catchError(
    (e) {
      if (e.message == 'No element') {
        print("Couldn't find User for Mobile Number $mobileNumber");
      } else if (e.message == 'Too many elements') {
        print("Found duplicate Users for Mobile Number $mobileNumber");
      }
      return null;
    },
    test: (e) => e is StateError,
  );
}