Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Flatter Firestore:如何执行类似于where(';fieldName';,arrayNotContains:';something';)的操作?_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Flutter Flatter Firestore:如何执行类似于where(';fieldName';,arrayNotContains:';something';)的操作?

Flutter Flatter Firestore:如何执行类似于where(';fieldName';,arrayNotContains:';something';)的操作?,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我知道“arrayNotContains”不存在,因此我如何才能做到这一点: 我有用户。每个用户都有图片。 我想向其他用户显示一个用户的图片,但只显示一次。因此,当用户看到其他人的图片时,他会将自己的ID添加到一个数组中,该数组是Firestore上图片文档的一个字段。大概是这样的: 图1{ “所有者”:“用户1”, 'alreadySeen':['user2'] } 图2{ “所有者”:“用户1”, 'alreadySeen':[] } 所以这里我想向用户2展示用户1的图片,除了他已经看到的图

我知道“arrayNotContains”不存在,因此我如何才能做到这一点:

我有用户。每个用户都有图片。 我想向其他用户显示一个用户的图片,但只显示一次。因此,当用户看到其他人的图片时,他会将自己的ID添加到一个数组中,该数组是Firestore上图片文档的一个字段。大概是这样的:

图1{ “所有者”:“用户1”, 'alreadySeen':['user2'] }

图2{ “所有者”:“用户1”, 'alreadySeen':[] }

所以这里我想向用户2展示用户1的图片,除了他已经看到的图片(这里是Image1)。 我想做一个Firestore查询,如下所示:

FirebaseFirestore.instance.collection('Images')
.where('ownerID', isNotEqualTo: currentUserID) // to prevent displaying his own images
.where('alreadySeen', arrayNotContains: currentUserID) // to prevent displaying an image already seen

您可以使用
notin
避免在
alreadySeen
集合中获取带有
currentUserID
的图像

以下是Firebase文档中的示例:

citiesRef.where('country', 'not-in', ['USA', 'Japan']);
您可以在此处查看更多详细信息:

Dart语法是:

citiesRef.where('country', whereNotIn: ['USA', 'Japan'])

谢谢,但这是Dart语言吗?我刚刚用Dart语法更新了我的答案。这不是针对数组的。在本例中,“country”是一个字符串字段。如果国家不等于“美国”或不等于“日本”,则不进行检查。在这个例子中,我想要的是‘国家’:[‘美国’、‘日本’]。CitiesRef.where('countries',arrayContains:'Japan')您可以发布您尝试过的解决方案吗。我相信一个好的起点将是遵循发布在这个答案上的官方文档,对Firestore执行查询。