如何通过Flutter在我的Firestore数据库中搜索多个字段

时间:2020-11-06 02:03:06

标签: firebase flutter search google-cloud-firestore

我正在尝试构建一种搜索功能,其中在搜索字段中输入的文本是通过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;

    });
  }

1 个答案:

答案 0 :(得分:2)

您不能将多个条件传递给where()。相反,您可以多次调用where(),将它们链接到所需的查询中:

usersReference
  .where("profileName",isGreaterThanOrEqualTo: searchWord)
  .where("username",isEqualTo: "QeustionableCoder")
  .getDocuments();

请注意,您可能需要为此类多字段查询定义索引。如果您缺少索引,SDK将记录有关该错误的错误消息。在该错误消息中查找URL,因为这是在正确字段上定义索引的最快方法。