跨 Sequelize 关联播种数据

Posted

技术标签:

【中文标题】跨 Sequelize 关联播种数据【英文标题】:Seeding data across Sequelize associations 【发布时间】:2018-04-03 19:49:31 【问题描述】:

我正在使用 Sequelize(ORM 的新手),目前有三个表:card 和 tags,它们具有与第三个表 card_tags 建立的多对多关系。我的问题有两个:

    如何跨关联播种数据? 如何创建跨关联数据库建立新数据的新数据(即 API 函数)?

请查看以下我的模型,如果我遗漏了任何内容,请告诉我。谢谢!

卡片模型:

'use strict';
module.exports = (sequelize, DataTypes) => 
  const Card = sequelize.define('card', 
    title: 
      type: DataTypes.STRING,
      allowNull: false
    ,
    link: 
      type: DataTypes.STRING,
      allowNull: false
    
  );

  Card.associate = (models) => 
    Card.belongsToMany(models.tag,  through: 'card_tag', as: 'tag' );
  ;

  return Card;
;

标签模型:

'use strict';
module.exports = (sequelize, DataTypes) => 
  const Tag = sequelize.define('tag', 
    title: 
      type: DataTypes.STRING,
      allowNull: false
    
  );

  Tag.associate = (models) => 
    Tag.belongsToMany(models.card,  through: 'card_tag', as: 'card');
  ;

  return Tag;
;

card_tags 模型:

'use strict';
module.exports = function(sequelize, DataTypes) 
  const CardTag = sequelize.define('card_tag', 
    cardId: DataTypes.INTEGER,
    tagId: DataTypes.INTEGER
  );

  return CardTag;
;

【问题讨论】:

【参考方案1】:

最简单快捷的方法是在每个关系中插入批量数据。 您可以为 bulkInsert 编写 sequelize 查询,记住首先创建每个外键的主键。

您可以使用 faker npm 模块来生成随机数据。

【讨论】:

以上是关于跨 Sequelize 关联播种数据的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize - 如何使用几何值播种数据库?

播种时运行 sequelize 模型钩子

Sequelize 从 belongsTo 关系中获取值

如何使用 sequelize 播种 uuidv4

sequelize 播种机上的自定义查询

更改数据库模型 - Sequelize