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": []
      }
    },