Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Angular 如何在Firestore中执行合成或操作?_Angular_Firebase_Google Cloud Firestore - Fatal编程技术网

Angular 如何在Firestore中执行合成或操作?

Angular 如何在Firestore中执行合成或操作?,angular,firebase,google-cloud-firestore,Angular,Firebase,Google Cloud Firestore,我需要过滤大量的数据。举个例子,我想根据健身房提供的便利设施和服务从firestore中筛选健身房=d。设施和服务都是一个阵列 查询: Select all gyms From the database Where Amenities[wifi, pool] and Services[parking, yoga] 如何在基于Firebase Firestore的项目上执行此操作?确实,正如您所提到的,每个查询不可能使用多个包含任何的数组。正如本Github中的一位Firebase开发人员所提到

我需要过滤大量的数据。举个例子,我想根据健身房提供的便利设施和服务从firestore中筛选健身房=d。设施和服务都是一个阵列

查询:

Select all gyms From the database Where Amenities[wifi, pool] and Services[parking, yoga]

如何在基于Firebase Firestore的项目上执行此操作?

确实,正如您所提到的,每个查询不可能使用多个包含任何的
数组。正如本Github中的一位Firebase开发人员所提到的,这就是它未实现的原因:

我们目前不支持这种查询,因为我们担心支持这种查询所需的索引行组合爆炸。我们不打算在短期内增加对此的支持

考虑到这一点,作为您使用的替代方案,我在社区中找到了这篇文章,它指出了用多个数组替代查询的两种可能性

我认为您可以尝试的一种方法(如中所述)更适合您,就是首先将值预设为属性,以便您可以在代码中直接使用它们。代码示例如下所示

    nAmenities = {
       "wifi": true,
       "pool": true,
       ...
    }

    nServices = {
       "parking" = true,
       "yoga" = true,
       ...
    }

    list.forEach( (val) => { 
        ref = ref.where(`nAmenities.${val}` , '==' , true);
        ref2 = ref2.where(`nServices.${val}` , '==' , true);

    //query of select using these above nAmenities and nServices variables

    });
这段代码没有经过测试,但我相信它可以作为一个起点帮助您。除此之外,我真的鼓励你们看看另一个,以验证他们的所有澄清和解释


如果这些信息对你有帮助,请告诉我

我知道有一个数组包含任何可以用作选项。但每个查询只能使用一个包含任何子句的数组。动态创建查询?那么我们如何创建它的索引呢?Hi@JithinJoy是的,可以使用动态查询进行索引。我建议你看看社区中的这两个其他帖子,其中有关于如何实现这一目标的例子。这些帖子对我没有帮助,那些帖子实际上做得很好。如果我想根据条件材料从firestore获得所有眼镜:[metal:true,acetate:true,mixed:fase]形状:[矩形:true,正方形:false,圆形:true]适合:[窄:true,中:true,宽:false,超宽:false]我该怎么做?