如何从 Cloud firestore 过滤两次数据?
How do I filter data from cloud firestore twice?
我想检查用户的文档中是否有字符串“Level”和任意数字。
Level: int
如果是这样,以后应该return真,如果不是的话。
这是我正在尝试的代码:
class StufenService{
String userID;
StufenService(this.userID);
final CollectionReference userTodos =
FirebaseFirestore.instance.collection('userTodos');
Future checkIfStufeExists() async {
await userTodos.where('Stufe' is int).get();
final data = QuerySnapshot.data.documents.where(userID);
if (data.exists){
return true;
} else
{return false;}
}
}
首先,我过滤掉所有在其 firebased 文档中具有“Level”: int 的用户。然后我想查看当前用户是否在用户中
QuerySnapshot后的数据用红色下划线表示:
The getter 'data' isn't defined for the type 'QuerySnapshot'.
有人可以帮我实现我的计划吗?
也许整个事情必须以不同的方式完成?
您没有对 where 语句的返回值执行任何操作。
class QuerySnapshot 没有 .data static getter。为了从 firestore 访问返回值,您需要执行类似的操作:
...
final snapshot = await userTodos.where('Stufe' is int).get();
final data = snapshot.data;
...
对于这种情况,我发现将 FlutterFire documentation and Firestore reference 放在手边最为有用。基于这些,你的代码应该是这样的:
final CollectionReference userTodos =
FirebaseFirestore.instance.collection('userTodos');
Future checkIfStufeExists() async {
var query = userTodos.where('Stufe', isEqualTo: 42); // First condition
query = query.where("userId", isEqualTo: userID); // Second condition
final querySnapshot = await query.get(); // Read from the database
return querySnapshot.size > 0; // Check if there are any results
}
我想检查用户的文档中是否有字符串“Level”和任意数字。
Level: int
如果是这样,以后应该return真,如果不是的话。 这是我正在尝试的代码:
class StufenService{
String userID;
StufenService(this.userID);
final CollectionReference userTodos =
FirebaseFirestore.instance.collection('userTodos');
Future checkIfStufeExists() async {
await userTodos.where('Stufe' is int).get();
final data = QuerySnapshot.data.documents.where(userID);
if (data.exists){
return true;
} else
{return false;}
}
}
首先,我过滤掉所有在其 firebased 文档中具有“Level”: int 的用户。然后我想查看当前用户是否在用户中
QuerySnapshot后的数据用红色下划线表示:
The getter 'data' isn't defined for the type 'QuerySnapshot'.
有人可以帮我实现我的计划吗? 也许整个事情必须以不同的方式完成?
您没有对 where 语句的返回值执行任何操作。 class QuerySnapshot 没有 .data static getter。为了从 firestore 访问返回值,您需要执行类似的操作:
...
final snapshot = await userTodos.where('Stufe' is int).get();
final data = snapshot.data;
...
对于这种情况,我发现将 FlutterFire documentation and Firestore reference 放在手边最为有用。基于这些,你的代码应该是这样的:
final CollectionReference userTodos =
FirebaseFirestore.instance.collection('userTodos');
Future checkIfStufeExists() async {
var query = userTodos.where('Stufe', isEqualTo: 42); // First condition
query = query.where("userId", isEqualTo: userID); // Second condition
final querySnapshot = await query.get(); // Read from the database
return querySnapshot.size > 0; // Check if there are any results
}