Firebase 使用多个where子句查询firestore
我正在使用firestore开发一个颤振应用程序,但现在为了搜索,我有一个查询。查询将如下所示Firebase 使用多个where子句查询firestore,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在使用firestore开发一个颤振应用程序,但现在为了搜索,我有一个查询。查询将如下所示 SELECT * FROM User WHERE age IS BETWEEN 16 TO 40 AND gender IS male AND isSearching IS true CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).c
SELECT *
FROM User
WHERE age IS BETWEEN 16 TO 40
AND gender IS male
AND isSearching IS true
CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");
Query _searching=collection.where('isSearching',isEqualTo: true);
Query _gender=_searching.where('gender',isEqualTo: preferredGender);
Query _ageless=_gender.where('age',isEqualTo: values.start.round());
Query _agemore=_ageless.where('age',isLessThanOrEqualTo: values.end.round() );
_agemore.get().then((querySnapshots) {
print(_ageless.toString());
if(querySnapshots.docs.length == 0)
{
print('data is empty');
}
else
{
print('data found');
}
});
我已经在flatter中为这个查询编写了如下代码
SELECT *
FROM User
WHERE age IS BETWEEN 16 TO 40
AND gender IS male
AND isSearching IS true
CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");
Query _searching=collection.where('isSearching',isEqualTo: true);
Query _gender=_searching.where('gender',isEqualTo: preferredGender);
Query _ageless=_gender.where('age',isEqualTo: values.start.round());
Query _agemore=_ageless.where('age',isLessThanOrEqualTo: values.end.round() );
_agemore.get().then((querySnapshots) {
print(_ageless.toString());
if(querySnapshots.docs.length == 0)
{
print('data is empty');
}
else
{
print('data found');
}
});
我已经在firestore中手动设置了数据,但我总是将输出数据设置为空。
写下上述语句的查询的最佳方法是什么?您可能需要为此创建一个额外的键。通常,当您执行查询时,android studio会抛出一个错误,并为您提供一个为您的项目创建索引的链接。您能试试这个吗
CollectionReference collection=FirebaseFirestore.instance.collection("Posts").doc(myMood).collection("Comments");
Query _searching=collection.where('isSearching',isEqualTo: true);
Query _gender=_searching.where('gender',isEqualTo: preferredGender);
Query _agemore=_gender.where('age',isLessThanOrEqualTo: values.end.round() );
_agemore.get().then((querySnapshots) {
print(_ageless.toString());
if(querySnapshots.docs.length == 0)
{
print('data is empty');
}
else
{
print('data found');
}
});
});
我已经为它创建了一个索引