如何在 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,
);
}
我想通过他的手机号码搜索用户。如果用户找到,则显示他的其他信息,如姓名。
搜索查询工作正常。但我无法访问数据。下面是我获取查询结果的函数。当我打印数据时,它只打印 ['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,
);
}