我使用Strapi为我的小应用程序构建API。在一个模型中,我有以下实体:
Article,Article Translation,Tag,Tag Translation。一篇文章有多篇文章翻译。每篇文章翻译有许多标签。每个标签有许多标签翻译。
我的问题是当我向Article发出get请求时,我没有收到标签翻译。我想对斯特拉皮来说太深了。如果我只是向标签或标签翻译发出get请求,响应是正确的。
如何增加关系响应的深度?
你需要重写控制器,像这样
module.exports = {
/**
* Promise to fetch all records
*
* @return {Promise}
*/
find: async (ctx) => {
return strapi.query('model-name').find(ctx.query, [
"entries",
"entries.image",
"entries.expandable_children",
"entries.expandable_children.image",
"entries.expandable_children.localizations",
"entries.localizations",
"localizations"
]);
},
findOne: async (ctx) => {
const { id } = ctx.params;
return strapi.query('model-name').findOne({ id }, [
"entries",
"entries.image",
"entries.expandable_children",
"entries.expandable_children.image",
"entries.expandable_children.localizations",
"entries.localizations",
"localizations"
]);
},
};
您可以尝试在请求URL的populate部分下添加Tag Translation字段,而不是覆盖任何控制器。
eg: populate[0]=article.tag.tag-translation
如果使用GraphQL这样就容易多了。我在我开发的一个应用程序中使用了类似的东西,效果很好。