我对使用 Strapi 无头 CMS 还很陌生。我正在尝试将一些数据填充到我的数据库中,就像将 knex 与 Node js 一起使用一样,但是,我不确定是否要这样做。我看过一个教程,在
config/functions/bootstrap.js
内部,我们将 module.export
一个异步函数来填充数据;我已经像这样定义了我的代码:
"use strict";
const data = [
{
title: "string",
description:"string",
director: "string",
assistantDirector: "string",
directorOfPhotography: "string",
firstAc: "string",
sound: "string",
thumbnail: "",
images: "",
hairAndMakeUp: "string",
productionAssistant: "string",
writer: "string",
cast: "string",
video: "string",
dateFilmed: 2020,
}];
module.exports = async () => {
data.forEach(reel => {
await strapi.services.reel.create({
title: reel.title,
description: reel.description,
director: reel.director,
assistantDirector: reel.assistantDirector,
directorOfPhotography: reel.directorOfPhotography,
firstAc: reel.firstAc,
sound: reel.sound,
hairAndMakeUp: reel.hairAndMakeUp,
productionAssistant: reel.productionAssistant,
writer: reel.writer,
cast: reel.cast,
video: reel.video,
dateFilmed: reel.dateFilmed,
});
})
};
但是,运行
strapi develop
后,我收到 Error while running command develop: undefined
错误。我错过了什么?
感谢您的宝贵时间。
问题解决了。
事实证明,删除 async/await 就可以了。我意识到该函数甚至不必是异步的。不太确定为什么会发生这种情况,但这是最终结果:
"use strict";
const data = [
{
title: "string",
description:"string",
director: "string",
assistantDirector: "string",
directorOfPhotography: "string",
firstAc: "string",
sound: "string",
thumbnail: "",
images: "",
hairAndMakeUp: "string",
productionAssistant: "string",
writer: "string",
cast: "string",
video: "string",
dateFilmed: 2020,
}];
const seedReel = (data) => {
data.forEach((reel) => {
strapi.query("reel").create({
title: reel.title,
description: reel.description,
director: reel.director,
assistantDirector: reel.assistantDirector,
directorOfPhotography: reel.directorOfPhotography,
firstAc: reel.firstAc,
sound: reel.sound,
hairAndMakeUp: reel.hairAndMakeUp,
productionAssistant: reel.productionAssistant,
writer: reel.writer,
cast: reel.cast,
video: reel.video,
dateFilmed: reel.dateFilmed,
});
});
};
module.exports = seedReel(data)
针对使用最新 Strapi V4 的所有人进行更新:
内部
src/index.js
编辑引导函数:
async bootstrap({ strapi }) {
// For deleting all entries
// await strapi.db.query("api::reel.reel").deleteMany({
// where: {
// id: {
// $null: false,
// },
// },
// });
// For creating entries
// const chunkSize = 500;
// for (let i = 0; i < data.length; i += chunkSize) {
// const chunk = data.slice(i, i + chunkSize);
// await strapi.db.query("api::reel.reel").createMany({
// data: chunk,
// });
// }
}
如果您不确定您的服务叫什么,您可以通过运行找到它
npm run strapi services:list