亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有編寫簡單的 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 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號