我正在将strapi与静态站点生成器(gatsby(一起使用,每当您在CMS内容中进行任何修改时,我都在尝试自动化"重建"过程。p>我正在尝试使用strapi文档中提到的生命周期回调来做到这一点:https://strapi.io/documentation/3.x.x.x/guides/webhooks/webhooks.html
问题在于,这些回调在不同模型中多次被称为。例如,我拥有的5个型号的" AfterUpdate"回调被调用5次。
我只想执行每次更改一次构建触发函数,有没有办法?
这似乎是Strapi Lifecycle回调的正确行为:https://github.com/strapi/strapi/strapi/strapi/issues/1153
实际上这里没有问题。实际上,当您创建条目时,我们首先创建条目,然后更新以处理关系。这就是为什么许多事件在创建条目时触发。
文档具有误导性,我认为不应使用生命周期方法来触发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();
},