Strapi嵌套关系多值属性填充问题:无法获取dish下的dish-options数据
问题原因
你当前的嵌套关联填充规则写错了字段名:dish-category 模型下关联 dish 的字段名为 dishes,不是 dish,所以你原来写的 dish.dish_options 无法匹配到正确的关联路径。
可行解决方案
方案1:修正控制器自定义查询代码
修改 dish-category/controllers/dish-category.js 中的填充规则:
'use strict'; module.exports = { async find(ctx) { // 注意嵌套路径是 dishes.dish_options,对应关联字段的层级命名 return strapi.query('dish-category').find(ctx.query, ["dishes", "dishes.dish_options"]); } };
修改后重启Strapi服务即可正常返回三层嵌套数据。
方案2:无需改代码,请求时携带填充参数
如果不想自定义控制器,直接在请求API时带上嵌套填充参数即可:
# Strapi v3版本参数格式 GET /dish-categories?_populate=dishes.dish_options # Strapi v4版本参数格式 GET /dish-categories?populate=dishes.dish_options
额外配置优化建议
你当前的 dish 模型中同时定义了两个和分类相关的关联字段:
dish_categories:多对多关联分类dish_category:多对一关联分类
二者逻辑冲突,如果你只需要一个菜品归属于一个分类,建议删除冗余的dish_categories字段,避免关联逻辑混乱导致查询异常。
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

