headless-cms Strapi で特定の場合にエントリを削除する適切な方法は何ですか? 1 つのコンテンツ タイプが特定の値を取得する場合。
たとえば、日付に達した/期限切れになった場合などです。私の場合、イベント カレンダーを作成しました。タイトル、場所、日付など、いくつかのコンテンツ タイプがあります。各イベントは、イベントの日付に達すると自動的に消える必要があります。どうすればこれを達成できますか?
headless-cms Strapi で特定の場合にエントリを削除する適切な方法は何ですか? 1 つのコンテンツ タイプが特定の値を取得する場合。
たとえば、日付に達した/期限切れになった場合などです。私の場合、イベント カレンダーを作成しました。タイトル、場所、日付など、いくつかのコンテンツ タイプがあります。各イベントは、イベントの日付に達すると自動的に消える必要があります。どうすればこれを達成できますか?
CRON タスクを使用することをお勧めします。この機能は Strapi で利用できます
ここにドキュメントhttps://strapi.io/documentation/3.0.0-beta.x/configurations/configurations.html#cron-tasksがあります。
したがって、ドキュメントに従ってCRONタスクを作成すると、関数で、CRON関数の実行日よりも古い日付のデータを取得する必要があります。
これを行うには、Query 関数を使用できます。
// Fetch data that have the `yourDateAttributeName_lt` lower than the now.
const data = await strapi.query('article').find({
yourDateAttributeName_lt: new Date()
});
// Delete all entries fetched.
data.forEach((entry) => strapi.query('article').delete({
id: entry.id
}));
カスタムクエリについて読むことをお勧めします https://strapi.io/documentation/developer-docs/latest/development/backend-customization.html#custom-queries
たとえば、knex delete を使用すると、次のように簡単に削除できます。
await strapi.connections.default('emails').where('isSend', true).del();
定期的なタスクについては、CRON の使用方法を参照してください https://strapi.io/documentation/developer-docs/latest/guides/scheduled-publication.html