首页 > 解决方案 > Flutter & firesbase:我怎样才能做一个“只包含来自”的查询

问题描述

我是 Flutter 的新手,我正在尝试构建一个以 Cloud Firestore 作为后端的应用程序。

我有一个显示在屏幕上的数据库中的项目列表,用户选择他想要的项目。

然后我想显示我拥有的所有列表并包含用户选择的列表中的项目。(比如如果用户选择了 ['tree',''sky','flower','table'],并且在数据库中我有 ['tree','flower'] 和 ['tree',''sky' ,'flower','table'] 我想展示它们)。

我尝试使用arrayContainsAny,但它也向我显示了包含其他项目的列表,例如['tree','sky','orange']。

有什么办法吗?

伊迪丝

如果用户列表选择是:['tree','orange','sky','flower']

在我的数据库中我有这些数组: ['flower','sky'] , ['tree','orange','sky','flower'] 和 ['sky','orange','computer']

那么我想要做的是只显示前 2 个数组(['flower','sky'] 和 ['tree','orange','sky','flower'])而不是最后一个,因为 'computer '不在用户列表中

arrayContains 的问题在于它显示了 3 个列表,这不是我想要的。

谢谢

标签: listfirebaseflutterarraylistgoogle-cloud-firestore

解决方案


试试这个方法。当您从 firestore 数组中获取所有项目时,然后将其分配给一个列表并在您想要的任何地方使用它。

 List<String> myList = [];
   getdata() async{
     await Firestore.instance.collection("points").document('biZV7cepFJA8T6FTcF08').get().then((value){
       setState(() {
         // first add the data to the Offset object
         List.from(value.data['point']).forEach((myitems){
           myList.add(myitems);
         });

       });
     });
   }

推荐阅读