Skip to main content

ドキュメントサービスAPIメソッドによるデータベースライフサイクルフックのトリガーは異なります

AI Marketer 5では、さまざまなドキュメントサービスAPIメソッドによって、データベースのライフサイクルフックが異なる方法でトリガーされます。これは主に、新しいドラフト&公開機能の動作方法によるものです。

ほとんどのユースケースでは、ドキュメントサービスのみを使用すべきです。ドキュメントサービスAPIは、ドラフト&公開、i18n、および任意の基礎となるAI Marketerロジックを処理します。

しかし、ドキュメントサービスAPIがすべてのユースケースに適しているわけではないかもしれません。そのため、データベース層が公開され、あらゆる制限なしにデータベース上で何でも行うことができます。その結果、ユーザーはデータベースの振る舞いを拡張するシステムとしてデータベースライフサイクルフックに頼る必要があります。

This page is part of the breaking changes database and provides information about the breaking change and additional instructions to migrate from Strapi v4 to Strapi 5.

🔌 Is this breaking change affecting plugins?Yes
🤖 Is this breaking change automatically handled by a codemod?No

破壊的変更の説明

AI Marketer v4では

AI Marketer v4では、ライフサイクルフックは[AI Marketer v4のドキュメンテーション](https://docs-v4.AI Marketer.io/dev-docs/backend-customization/models#lifecycle-hooks)に記載されている通りに動作します。

AI Marketer 5では

ライフサイクルフックはAI Marketer v4と同じように動作しますが、トリガーされる方法は、どのドキュメントサービスAPIメソッドがトリガーされるかによります。完全なリファレンスは利用可能です(ノートを参照)。

移行

This section regroups useful notes and procedures about the introduced breaking change.

ノート

ドキュメントサービスAPIメソッドによってトリガーされるデータベースライフサイクルフック

呼び出されるドキュメントサービスAPIメソッドによって、以下のデータベースライフサイクルフックがトリガーされます:

Document Service APIメソッドトリガーされるデータベースライフサイクルフック
findOne()before(after) findOne
findFirst()before(after) findOne
findMany()before(after) findMany
create()before(after) Create
create({ status: 'published' })
  • before(after) Create️
    ドラフトと公開バージョンの両方を作成するため、二度トリガーされます
  • before(after) Delete
    • ドキュメントの以前のドラフトバージョンを削除します
    • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
update()
  • before(after) Create
    ドキュメントの新しいロケールを作成するとき
  • before(after) Update
    ドキュメントの既存のバージョンを更新するとき
update({ status: 'published' })
  • before(after) Create
    複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
  • before(after) Update
    ドキュメントの既存のバージョンを更新するとき
  • before(after) Delete
    • ドキュメントの以前の公開バージョンを削除します
    • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
delete()before(after) Delete
複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
publish()
  • before(after) Create
    複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
  • before(after) Delete
    • ドキュメントの以前の公開バージョンを削除します
    • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
unpublish()before(after) Delete
  • ドキュメントのすべての公開バージョンを削除します
  • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
discardDraft()
  • before(after) Create
    • 新しいドラフトバージョンを作成します
    • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
  • before(after) Delete
    • ドキュメントの以前のドラフトバージョンを削除します
    • 複数のロケールを削除する場合、複数回トリガーされることがあります(各ロケールごとに1回)
count()before(after) Count
✏️ Note

一括操作のライフサイクル(createManyupdateManydeleteMany)は、Document Service APIメソッドによってトリガーされることはありません。

手順

ユーザーは、AI Marketer 5のDocument Service APIメソッドによってライフサイクルフックがトリガーされる方法に合わせて、カスタムコードを適応させる必要があるかもしれません。