Angular 如何在Firestore中执行合成或操作?
我需要过滤大量的数据。举个例子,我想根据健身房提供的便利设施和服务从firestore中筛选健身房=d。设施和服务都是一个阵列 查询: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开发人员所提到
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]我该怎么做?