有没有编写简单的 Strapi 插件的例子,可以 CRUD 到数据库?

背景

我决定将 Strapi 部署为我的项目的无头 CMS/后端,并且对开箱即用的轻松设置非常满意。但是,我的项目的一部分需要通过简单的表单捕获用户输入,我认为通过编写自定义插件和利用相同的后端来扩展Stati的REST API是可行的方法,而不是使用自己的数据库启动另一个快速服务器。我能够找到有关生成插件的文档,并且我对不同插件文件的文件结构和逻辑(模型,控制器,策略,配置,路由等)的工作原理有很好的理解。但是,对于我的生活,我无法找到最基本的资源或任何关于如何编写逻辑的足够文档,允许我的控制器挂接到Steati为我的自定义集合创建的基本CRUD方法(在我的情况下是“消息”)。

到目前为止,我做了什么

  • 生成插件

    表带生成:插件通讯录

  • 插件\联系人表单\config\routes.json.创建了一个路由,在允许从“管理”面板进行公共访问后,我已成功对其进行了测试/postMessage

   {   "routes": 

       [

        {

         "method": "POST",

         "path": "/postMessage",

         "handler": "contact-form.postMessage"

        }

       ]

     }

在插件\接触形式\模型中。我创建了一个空的模型文件&包含我的模型“消息”的定义,它定义了一个colationType集合名称“消息”及其字段,如下所示:Message.jsMessage.settings.json

     {

     "kind": "collectionType",

     "connection": "default",

     "info": {

       "name": "message",

       "description": "This represents the Message Model"

      },

     "attributes": {

       "name": {

         "default": "",

         "type": "string",

         "required": true

        },

       "email": {

         "default": "",

         "type": "email",

         "required": true

        },

       "message": {

         "default": "",

         "type": "text",

         "required": true

        }

     }

    }

在开发服务器重新启动后,Strapi已经识别出我的插件,并在其数据库中反映了“消息”模型,我可以从管理面板中正确看到该集合。


我需要什么帮助

我想做的是扩展插件的REST API端点,以提供与 Strapi 在创建新集合/实体时构建的开箱即用端点相同的功能,同时为其添加自定义业务逻辑层。


我很感激任何人向我指出一个示例或资源,该示例或资源显示了Stati向插件公开的方法或函数,这些插件可以挂钩或调用以实现此目的。


神不在的星期二
浏览 92回答 1
1回答

开心每一天1111

上述可以通过利用内置的 Strapi 暴露的方法来实现。通过检查堆栈如何通过自动生成 API 端点处理创建操作,我能够将 确定 为此功能的相应模块。但是,在将插件的模型名称传递给 时,服务无法找到 。因此,我检查了服务的源代码,发现它接受模型 UID。因此,在自定义插件的情况下,我们需要传递格式化为这样的插件,而不是仅仅传递:entityServiceentityServicestrapi.entityService.create({data} , {model: 'modelName')modelNamemodelNamemodelUIDplugins::plugin-name.modelName总之,对于针对我的问题中的示例的创建操作,它将是这样的:const result = await strapi.entityService.create(   { data: ctx.request.body },   { model: "plugins::contact-form.message" } )Strapi支持的所有其他CRUD操作也由实体服务公开,并且可以以类似的方式访问(创建,更新,查找,查找等)。您可以在 Strapi 文档>概念>控制器>核心控制器中找到所有这些方法。我还制作了一个YouTube视频,介绍了它是如何工作的:https://www.youtube.com/watch?v=kIZHzbmnhnU
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript