strapi 中 camelCase 集合类型的自定义控制器
custom controllers for camelCase collection types in strapi
我使用 cammelCase 在 strapi 中创建了一堆集合:
但是,这创建了以下文件结构:
/api/class-resource/controllers/class-resource.js
现在,当我尝试按照 this guide 创建自定义控制器时,js 编译器不让我调用我需要的服务,因为它认为我在减去:
module.exports = {
/**
* Create a record.
*
* @return {Object}
*/
async create(ctx) {
let entity;
if (ctx.is('multipart')) {
const { data, files } = parseMultipartData(ctx);
data.author = ctx.state.user.id;
entity = await strapi.services.class-resource.create(data, { files }); //problem here
} else {
ctx.request.body.author = ctx.state.user.id;
entity = await strapi.services.class-resource.create(ctx.request.body); //problem here
}
return sanitizeEntity(entity, { model: strapi.models.class-resource}); //problem here
},
};
除了重命名我所有的内容类型之外,还有什么办法可以解决这个问题吗?
这个解决方案是 Pascal Isman 在 strapi community slack 中给我的:
strapi.services['camel-case'].create(...)
我使用 Joey 代码将每个 ID 的 findOne 替换为 slug
似乎有效
/控制器
const { sanitizeEntity } = require("strapi-utils");
module.exports = {
async findOne(ctx) {
const { slug } = ctx.params;
const entity = await strapi.services["blog-post"].findOne({ slug });
return sanitizeEntity(entity, { model: strapi.models["blog-post"] });
},
};
/配置
{
"method": "GET",
"path": "/blog-posts/:slug",
"handler": "blog-post.findOne",
"config": {
"policies": []
}
},
我使用 cammelCase 在 strapi 中创建了一堆集合:
但是,这创建了以下文件结构:
/api/class-resource/controllers/class-resource.js
现在,当我尝试按照 this guide 创建自定义控制器时,js 编译器不让我调用我需要的服务,因为它认为我在减去:
module.exports = {
/**
* Create a record.
*
* @return {Object}
*/
async create(ctx) {
let entity;
if (ctx.is('multipart')) {
const { data, files } = parseMultipartData(ctx);
data.author = ctx.state.user.id;
entity = await strapi.services.class-resource.create(data, { files }); //problem here
} else {
ctx.request.body.author = ctx.state.user.id;
entity = await strapi.services.class-resource.create(ctx.request.body); //problem here
}
return sanitizeEntity(entity, { model: strapi.models.class-resource}); //problem here
},
};
除了重命名我所有的内容类型之外,还有什么办法可以解决这个问题吗?
这个解决方案是 Pascal Isman 在 strapi community slack 中给我的:
strapi.services['camel-case'].create(...)
我使用 Joey 代码将每个 ID 的 findOne 替换为 slug 似乎有效
/控制器
const { sanitizeEntity } = require("strapi-utils");
module.exports = {
async findOne(ctx) {
const { slug } = ctx.params;
const entity = await strapi.services["blog-post"].findOne({ slug });
return sanitizeEntity(entity, { model: strapi.models["blog-post"] });
},
};
/配置
{
"method": "GET",
"path": "/blog-posts/:slug",
"handler": "blog-post.findOne",
"config": {
"policies": []
}
},