⏳
Strapi v4 で予約方法をする方法
Strapi v3から若干変更があったので投稿します。
筆者はStrapi v4.1.5で動作を使用しています。
僕はpostというコンテンツを作り、そこに記事を入れてます。
articleなどの方はいずれかを書き換えてください。
流れ
- configにcron-tasks.jsを作成し、コードを書く
- server.jsにcronをtrueにするコードを書く
1.configにcron-tasks.jsを作成し、コードを書く
config/cron-cron-tasks.js を作り、以下のようなコードを書く
const Strapi = require("@strapi/strapi/lib/Strapi");
module.exports = {
"*/1 * * * *": {
// fetch articles to publish
task: async () => {
const draftArticleToPublish = await strapi.db
.query("api::post.post")
.findMany({
where: {
publishedAt: {
$null: true,
},
publish_at: {
$lt: new Date(),
},
},
});
// update published_at of articles
await Promise.all(
draftArticleToPublish.map((post) => {
return strapi
.service("api::post.post")
.update(post.id, { data: { publishedAt: new Date() } });
})
);
},
options: {
tz: "Asia/Tokyo",
},
},
};
2.server.jsにcronをtrueにするコードを書く
server.jsに以下をコピペ。
別途コードがあれば、
const cronTasksと、portの下のcron:の部分だけコピペで動くと思います。
const cronTasks = require("./cron-tasks.js");
module.exports = ({ env }) => ({
host: env("HOST", "0.0.0.0"),
port: env.int("PORT", 1337),
cron: {
enabled: true,
tasks: cronTasks,
},
});
おすすめの書籍
Strapiのおすすめの書籍は今のところありませんが、
一般的にGatsby.jsで利用するかと思うので、gatsby.jsの本を記載します。
【特典付き! 】Webサイト高速化のための 静的サイトジェネレーター活用入門
React & Gatsby開発入門
Discussion