You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:54:03