我试图添加一个OR
条件到我的flutter firebase查询。
下面是我的代码,但我想检查receiver_name
等于kim
或sender_name
等于kim
的位置
StreamBuilder(
stream: Firestore.instance.collection("payments").where("receiver_name", isEqualTo: userActive).snapshots(),
builder: (context, snapshot){
return Container ( child:ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data.documents.length,
padding: EdgeInsets.all(0),
controller: ScrollController(keepScrollOffset: false),
itemBuilder: (context, index){
DocumentSnapshot documentSnapshot = snapshot.data.documents[index];
2条答案
按热度按时间bd1hkmkf1#
正如@ChristopherMoore评论的那样,Firestore不可能在多个字段上使用OR条件。执行单独的查询并在客户端合并它们是最常见的解决方法。有关此方面的更多信息,请参阅:
不将您的问题标记为这些问题的重复的原因是指出使用单个查询实现相同结果的另一种方法。
为每个文档添加参与者数组
如果向文档添加数组字段
participants
,其中包含发送方和接收方的UID字段,则可以使用array-contains
查询获取用户为发送方或接收方的所有付款。要向这样的数组添加UID,请确保使用
array-union
运算符:然后要查询它,您可以用途:
2admgd592#
Firebase现在提供OR运算符。
它现在可以通过使用
Filter.or
来实现。请点击此链接了解更多详细信息:或运算符您需要Cloud Firestore版本24.4.5
在Flutter中需要
cloud_firestore: ^4.5.0
要查询它,您必须像这样编写: