如何在 Strapi cms 组件中深度获取?

How to deep fetch In Strapi cms compnents?

我有来自 Strapi cms 的以下用户 API,我想向其深度获取地址组件(可重复组件)。

所以,我要获取的是地址为63 Southlands Road的用户...我试了很多方法:

http://localhost:1337/users?address.info=63%20Southlands%20Road

以上所有这些消息都没有解决,我 运行 别无选择。这在 Strapi 中是否可行...如果不行,我正在尝试切换到节点服务器。

Strapi中无法直接查询基于嵌套组件数据的模型。但是您可以改用原始查询来查询组件数据并获得所需的结果。 table 名称基于上下文中的模型名称,因为 Strapi 遵循此特定命名约定,并在您在管理中创建 content-types 时自动创建 table。

命名约定后跟Strapi

如果您创建一个名为 user 的模型并在其中创建两个组件,例如 addresslocation,那么 Strapi 将创建 4 个 table如下:

  1. users - 这是实际存储模型数据的table
  2. users_components - 此 table 存储用户模型对每个记录的所有组件的映射
  3. components_users_address - 此 table 将存储有关链接到 user 模型
  4. 的所有 address 组件的数据
  5. components_users_location - table 将存储有关链接到 user 模型
  6. 的所有 location 组件的数据

您可以通过 pg-adminphp-myadmin 打开项目数据库来交叉检查 table 名称。

解决方案
let result = await strapi.connections.default.raw(
"SELECT u.*
 FROM users u
 LEFT JOIN users_components uc
 ON (uc.user_id = u.id AND uc.component_type='components_users_address' AND uc.field='address')
 LEFT JOIN components_users_address cua ON (cua.id = uc.component_id)
 WHERE AND cua.ifno LIKE '63 Southlands Road'");
console.log(result);

P.S:我只在 MySQLPostGreSQL

中尝试过