我正在尝试构建一种搜索功能,其中在搜索字段中输入的文本是通过Firestore中的两个字段(profileName和username)进行搜索的。例如,如果用户具有profileName'Sylvester Appiah'和用户名'keeett'。然后,当搜索用户名或profileName时,它应返回同一用户。我不确定是否可以在.where()方法内执行profileName或用户名。任何帮助表示赞赏!
controlSearch(String searchWord){
Future<QuerySnapshot>pUsers=usersReference
.where("profileName",isGreaterThanOrEqualTo:searchWord)
.getDocuments();
setState(() {
futureSearchResult = pUsers;
});
}
答案 0 :(得分:2)
您不能将多个条件传递给where()
。相反,您可以多次调用where()
,将它们链接到所需的查询中:
usersReference
.where("profileName",isGreaterThanOrEqualTo: searchWord)
.where("username",isEqualTo: "QeustionableCoder")
.getDocuments();
请注意,您可能需要为此类多字段查询定义索引。如果您缺少索引,SDK将记录有关该错误的错误消息。在该错误消息中查找URL,因为这是在正确字段上定义索引的最快方法。