gpt4 book ai didi

javascript - 如何在 Sequelize JS 和 PostgreSQL 中的 1 :M relationship when implementing with . bulkCreate() 中使用外键

转载 作者:行者123 更新时间:2023-12-03 22:39:44 27 4
gpt4 key购买 nike

我正在编写一个可以从 (.csv) 数据集中提取数据的脚本。我能够将数据拉入控制台,创建新表并将数据插入数据库。

我想弄清楚如何在实现 .bulkCreate() 时设置外键。当我坚持使用常规 .create() 时,出现资源错误。

数据集保存在 2 个数组中:

  • 竞争对手Objs
  • meetObjs

  • 到目前为止,这是我尝试插入数据的方式:
    sequelize.sync().then(() => {

    meets.bulkCreate(meetObjs).then(data => {

    competitorObjs.forEach(x => {

    competitors.create({
    MeetID: x.MeetID,
    Name: x.Name,
    Sex: x.Sex,
    Equipment: x.Equipment,
    Age: x.Age,
    Division: x.Division,
    BodyweightKg: x.BodyweightKg,
    WeightClassKg: x.WeightClassKg,
    BestSquatKg: x.BestSquatKg,
    BestBenchKg: x.BestBenchKg,
    BestDeadlift: x.BestDeadlift,
    TotalKg: x.TotalKg,
    Place: x.Place,
    Wilks: x.Wilks,
    UserId: data.get("MeetID") // Set FK here (Not sure if correct implementation)
    })
    })
    }).then(() => {
    console.log("Bulk Creation Success!");
    }).catch((err) => {
    console.log(err)});
    })

    脚本完成后,仅填充了“Meets”表,但“Competitors”保持空白。

    如何在每个“竞争对手”插入中设置外键以指向“Meets”表中的每个主键? (FK 未设置为唯一)

    最佳答案

    你快到了。您可以使用 index 循环

    competitorObjs.forEach((x, index) => {
    competitors.create({
    ...
    ..
    ..
    UserId: data[index]["MeetID"]

    这种方法的问题在于,要创建 N 个对象,您将创建 N + 1 个查询。 1 用于批量创建,N 用于关联表。您也可以在关联数组中使用 bulkCreate

    您可以遍历 competitorObjs ,如上所述填写 UserId ,然后执行 bulkCreate。

    关于javascript - 如何在 Sequelize JS 和 PostgreSQL 中的 1 :M relationship when implementing with . bulkCreate() 中使用外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51072813/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com