首页 > 解决方案 > Flutter Firebase ArrayContains Where 查询

问题描述

 var searchRef = _firestore
        .collection("vehicles")
        .where("models.plane", isEqualTo: "true")
        .where("models.bus", isEqualTo: "true");

在此查询方法中,我可以查询多个值,但我想动态地执行此操作。如果用户进入飞机,我想查询飞机或者如果用户进入飞机和公共汽车,我想查询飞机和公共汽车,或者如果用户进入飞机,公共汽车和跑车,我想查询飞机、公共汽车和跑车。也就是说,要查询的变量的数量和变量会因用户而异。

如何将此代码转换为动态代码。

标签: firebaseflutterfor-loopgoogle-cloud-firestore

解决方案


目前这是不可能的。您必须获取包含其中任何一个值的文档,然后在 Flutter 应用程序中手动过滤它们。

您只需将该数组作为arrayContains.

var sRef = _firestore
           .collection("vehicles1")
           .where("models", arrayContains: item);

此查询将返回vehicles集合中的所有文档,其中数组models包含您传递的数组中的任何一项。然后您可以过滤该数组并检查哪些文档的模型数组包含所有这些项目。

你可以检查这个答案:Flutter filter list as per given condition


推荐阅读