【问题标题】:How to integrate Strapi with a SSG using lifecycle callbacks?如何使用生命周期回调将 Strapi 与 SSG 集成?
【发布时间】:2019-05-15 22:16:49
【问题描述】:

我将 Strapi 与静态网站生成器 (Gatsby) 一起使用,并且每当您对 CMS 内容进行任何修改时,我都会尝试自动执行“重建”过程。

我正在尝试使用 Strapi 文档中提到的生命周期回调来执行此操作:https://strapi.io/documentation/3.x.x/guides/webhooks.html

问题是这些回调在不同的模型中被多次调用。例如,对于我拥有的 5 个模型,“afterUpdate”回调被调用了 5 次。

我只想每次更改只执行一次构建触发功能,有没有办法做到这一点?

【问题讨论】:

    标签: strapi


    【解决方案1】:

    这似乎是 Strapi 生命周期回调的正确行为:https://github.com/strapi/strapi/issues/1153

    其实这里没有问题。事实上,当你创建一个条目时,我们首先创建条目然后更新处理关系。这就是为什么在创建条目时会触发许多事件。

    文档具有误导性,我认为不应使用生命周期方法来触发 SSG 构建。

    我发现一个更好的选择是使用 ContentManager.js 控制器,它位于:plugins/content-manager/controllers/ContentManager.js

    createupdatedelete 函数在每个请求中只调用一次,因此这是触发 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();
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2012-07-14
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多