使用 Strapi headless CMS 将数据播种到数据库

问题描述 投票:0回答:2

我对使用 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
错误。我错过了什么?

感谢您的宝贵时间。

database content-management-system strapi
2个回答
4
投票

问题解决了。

事实证明,删除 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)

2
投票

针对使用最新 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

文档:https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/query-engine/bulk-operations.html#createmany

© www.soinside.com 2019 - 2024. All rights reserved.