为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2022-09-29 17:55:49
背景我决定将 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向插件公开的方法或函数,这些插件可以挂钩或调用以实现此目的。
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

上述可以通过利用内置的 Strapi 暴露的方法来实现。通过检查堆栈如何通过自动生成 API 端点处理创建操作,我能够将 确定 为此功能的相应模块。但是,在将插件的模型名称传递给 时,服务无法找到 。因此,我检查了服务的源代码,发现它接受模型 UID。因此,在自定义插件的情况下,我们需要传递格式化为这样的插件,而不是仅仅传递:entityServiceentityServicestrapi.entityService.create({data} , {model: 'modelName')modelNamemodelNamemodelUID

plugins::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


查看完整回答
反对 回复 2022-09-29
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信