使用 OR 运算符进行复合查询 flutter 和 firebase

Dav*_*vid 2 firebase flutter google-cloud-firestore

我正在创建一个 flutter 应用程序,它应该查询 Firestore 集合并在满足两个条件时返回结果。这是我的代码:

Stream<List<FormQuestions>> get question {
  return someCollection
  .where('myQUestion', isEqualTo: 'nameQuestion')
  .snapshots()
  .map(_someQuestionListFromSnapshot);
}
Run Code Online (Sandbox Code Playgroud)

如果我只使用一个 .where() 条件,它就可以正常工作。但是对于两个,尽管我有满足这两个条件的文件,但它没有给出任何结果。我希望它返回多个 .where() 条件,如下所示:

Stream<List<FormQuestions>> get question {
  return someCollection
  .where('myQUestion', isEqualTo: 'nameQuestion')
  .where('myQuestion', isEqualTo: 'ageQuestion')
  .snapshots()
  .map(_someQuestionListFromSnapshot);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法添加 OR(||) 运算符,或者如何执行此操作以便获得“nameQuestion”和“ageQuestion”的结果?请协助。谢谢。

Fra*_*len 9

Firestore 不支持常规 OR 查询,但它支持IN 查询,您可以使用它来实现您需要的功能。

你的查询看起来像citiesRef.where('country', 'in', ['USA', 'Japan']);

someCollection
  .where('myQUestion', whereIn: ['nameQuestion', 'ageQuestion'])
Run Code Online (Sandbox Code Playgroud)

另请参阅: