Sequelize在Postgres中的bulkCreate返回顺序。

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

BulkCreate返回一个模型数组,但它们的顺序是否与提供的数据相匹配?

const records = [ { name: 'John' }, { name: 'Doe' } ]
const newRecords = await Person.bulkCreate(records)

创建的模型的顺序是否与记录数组的顺序一致?

我想做的是批量创建记录,记录之间的关系,类似于

const teams = [
    {
        name: 'Team name one',
        players: [
            {
                name: 'John',
                teamId: null
            },
            {
                name: 'Doe',
                teamId: null
            }
        ]
    }
]

我有一个团队对象列表,每个团队都有球员阵列。我想批量创建所有的球队,然后批量创建所有的球员。但为了创建球员,我需要知道球队创建时的id。

如果顺序确实匹配,我可以映射模型,并添加团队的Id

const teamRecords = await Team.bulkCreate(teams)
const playersToInsert = []
teams.forEach((team, i) => {
  const teamId = teamRecords[i].id
  playersToInsert.concat(team.players.map(player => ({ ...player, teamId }))
})
const players = await Player.bulkCreate(playersToInsert)

有没有更好的方法来做这样的事情?

node.js sequelize.js
© www.soinside.com 2019 - 2024. All rights reserved.