Storyblok中filter_query多条件筛选逻辑异常问题咨询
解决Storyblok API筛选条件逻辑不符的问题
你遇到的问题主要出在两个地方:
- 区域筛选的条件写错了,原本包含了Blue Waters,直接导致该区域项目被纳入结果;
- 未明确指定多条件间的AND逻辑,导致API解析出现歧义,甚至参数顺序影响结果。
修正后的代码
const storyblokApi = useStoryblokApi() const { data: realty, pending } = await useAsyncData<Realty>( async () => await storyblokApi.get('cdn/stories', { version: "published", content_type: "project", per_page: 6, filter_query: { _and: [ { price: { "gt-int": 0, "lt-int": 1300001, } }, { area: { eq: "Dubai Marina" } // 仅匹配Dubai Marina区域 }, { market: { eq: "primary" } // 仅匹配primary市场 } ] } }) )
关键调整说明
- 修正区域筛选:把
area的in_array改成eq并只保留Dubai Marina,直接排除Blue Waters的项目,符合你不需要该区域的需求。 - 明确AND逻辑:用
_and操作符包裹所有条件,强制API同时满足价格范围、区域、市场三个筛选条件,彻底解决参数顺序影响结果的问题。 - 简化市场筛选:单值匹配用
eq比in_array更直观,效果完全一致。
内容的提问来源于stack exchange,提问作者mart cube
相关产品推荐
相关产品推荐

