使用Sequelize批量创建模型实例时,如何设置foreignKey列?

时间:2017-05-21 22:18:11

标签: postgresql sequelize.js

我的民意调查模型和期权模型之间存在一对多的关系,其中一个民意调查可以有多个选项。

设置关联,以便Options具有pollId列,该列需要插入轮询模型中的正确id。

var Options = sequelize.define('Options', {
    name: {
      type: DataTypes.STRING, 
      allowNull: false
    },
    votes: {
      type: DataTypes.INTEGER, 
      allowNull: false
    }
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
        Options.belongsTo(models.Polls, {
          foreignKey: 'pollId', 
          onDelete: 'CASCADE'
        });
      }
    }
  });

我正在使用批量创建一次创建多个选项,如此

models.Users.findOne({
        where: {uuid: user_id}
    }).then((user) => {
        models.Polls.create({
            createdBy: user.get('name'),
            userId: user_id, 
            voter_ids: []
        }).then((poll) => {
            models.Options.bulkCreate({

            })
        })
    });

不确定如何以有意义的方式将pollId选项添加到每个条目以反映相同的轮询模型实例。

1 个答案:

答案 0 :(得分:0)

如果要使用bulkCreate(),则必须手动将pollId添加到选项中。你可以轻松做到:{pollId: poll.id}

但是有一个更好的选择: 您可以发出一个create(),包括民意调查和选项。只需将选项添加到投票中,并使用include的{​​{1}}选项指定您也要创建这些选项,请参阅:http://docs.sequelizejs.com/manual/tutorial/associations.html#creating-elements-of-a-hasmany-or-belongstomany-association

create()