如何使用生命周期回调将 Strapi 与 SSG 集成?
How to integrate Strapi with a SSG using lifecycle callbacks?
我将 Strapi 与静态站点生成器 (Gatsby) 结合使用,并且我试图在您对 CMS 内容进行任何修改时自动执行 "rebuild" 过程。
我正在尝试使用 Strapi 文档中提到的生命周期回调来执行此操作:https://strapi.io/documentation/3.x.x/guides/webhooks.html
问题是这些回调在不同模型中被多次调用。例如,对于我拥有的 5 个模型,"afterUpdate" 回调被调用了 5 次。
我只想在每次更改时只执行一次构建触发器函数,有没有办法做到这一点?
这似乎是 Strapi 生命周期回调的正确行为:https://github.com/strapi/strapi/issues/1153
Actually there is no issue here. In fact when you create an entry, we first create the entry and then update to handle relations. That's why many events are trigger on create entry.
该文档具有误导性,我认为不应使用生命周期方法来触发 SSG 构建。
我发现一个更好的选择是使用 ContentManager.js 控制器,它位于:plugins/content-manager/controllers/ContentManager.js
create
、update
和 delete
函数每个请求仅调用一次,因此这是触发 SSG 构建的更好位置:
delete: async ctx => {
ctx.body = await strapi.plugins['content-manager'].services['contentmanager'].delete(ctx.params, ctx.request.query);
// This is just a request to another service
// that triggers the SSG build.
await build.triggerSSGBuild();
},
我将 Strapi 与静态站点生成器 (Gatsby) 结合使用,并且我试图在您对 CMS 内容进行任何修改时自动执行 "rebuild" 过程。
我正在尝试使用 Strapi 文档中提到的生命周期回调来执行此操作:https://strapi.io/documentation/3.x.x/guides/webhooks.html
问题是这些回调在不同模型中被多次调用。例如,对于我拥有的 5 个模型,"afterUpdate" 回调被调用了 5 次。
我只想在每次更改时只执行一次构建触发器函数,有没有办法做到这一点?
这似乎是 Strapi 生命周期回调的正确行为:https://github.com/strapi/strapi/issues/1153
Actually there is no issue here. In fact when you create an entry, we first create the entry and then update to handle relations. That's why many events are trigger on create entry.
该文档具有误导性,我认为不应使用生命周期方法来触发 SSG 构建。
我发现一个更好的选择是使用 ContentManager.js 控制器,它位于:plugins/content-manager/controllers/ContentManager.js
create
、update
和 delete
函数每个请求仅调用一次,因此这是触发 SSG 构建的更好位置:
delete: async ctx => {
ctx.body = await strapi.plugins['content-manager'].services['contentmanager'].delete(ctx.params, ctx.request.query);
// This is just a request to another service
// that triggers the SSG build.
await build.triggerSSGBuild();
},