如何在Strapi CMS中深度查询可重复组件并按组件字段筛选用户
Strapi可重复组件筛选查询解决方案
Strapi原生支持对可重复组件的嵌套筛选,你之前的写法不符合官方查询语法规则,正确实现方式如下:
1. REST API内置查询正确写法
可重复组件属于嵌套结构,需要先通过populate参数加载关联组件,再搭配filters做嵌套匹配,正确请求示例:
# Strapi v4 版本 http://localhost:1337/api/users?populate=address&filters[address][info][$eq]=63%20Southlands%20Road # Strapi v3 版本(无/api前缀) http://localhost:1337/users?populate=address&address.info=63%20Southlands%20Road
以上写法会返回至少存在一个address组件info字段匹配目标值的所有用户,符合你的筛选需求。
2. 自定义代码查询正确写法
你之前的写法错误点在于没有关联加载组件,且新旧版本API使用混淆,对应版本正确写法如下:
Strapi v4 写法
const result = await strapi.db.query('plugin::users-permissions.user').findMany({ populate: ['address'], where: { address: { info: { $eq: '63 Southlands Road' } } } })
Strapi v3 写法
const result = await strapi.query('user', 'users-permissions').find({ 'address.info': '63 Southlands Road' }, ['address'])
排查验证项
如果执行后仍未返回预期结果,请先核对两个配置:
- 用户对应的角色权限中,已经开启了address字段的查询、筛选权限
- 组件字段名
address和子字段名info拼写无错误,字段类型为字符串
内容的提问来源于stack exchange,提问作者Mai Rich
相关产品推荐
相关产品推荐

