我有以下來自 Strapi cms 的用戶 API,我想將其深度提取地址組件(可重復組件)。

所以,我想要獲取的是地址是63 Southlands Road...的用戶我嘗試了很多方法:
- 嘗試了 Strapi 內置查詢
http://localhost:1337/users?address.info=63 Southlands Road
嘗試自定義查詢:
const result = await strapi .query("user") .model.query((qb) => { qb.where("address.info", "63 Southlands Road"); }) .fetch();
以上所有這些訊息都沒有奏效,我的選擇用完了。這在 Strapi 中是否可行...如果不是,我正在嘗試切換到節點服務器。
uj5u.com熱心網友回復:
在Strapi沒有基于直接嵌套組件的資料查詢模型的方式。但是您可以使用原始查詢來查詢組件資料并獲得所需的結果。表名稱基于背景關系中的模型名稱,Strapi遵循此特定命名約定,并在您content-types在 admin 中創建表時自動創建表。
命名約定后跟 Strapi
如果您創建一個名為模型user,并在其中創建兩個組件,例如,address和location隨后Strapi將創建4個表如下:
- users - 這是實際存盤模型資料的表
- users_components - 該表存盤用戶模型對每條記錄的所有組件的映射
- components_users_address - 此表將存盤有關
address鏈接到user模型的所有組件的資料 - components_users_location - 該表將存盤有關
location鏈接到user模型的所有組件的資料
您可以通過pg-admin或打開您的專案資料庫來交叉檢查表名php-myadmin。
解決方案
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);
PS:我只在想這MySQL和PostGreSQL
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/345249.html
上一篇:創建輸出列
