2017-07-19 84 views
1

我试图让我的应用程序使用sequelize将其种子到PostgreSQL数据库中,以此获得一些默认数据。到目前为止,我只找到了一种方法来做到这一点,这并不理想。具有多对多关系的Sequelize中的种子数据

我的主要问题是,如果有人在这里知道“最佳实践”的方式来做到这一点。

到目前为止,我已经尝试过使用种子,在同步每个模型后注入默认信息,最后我又回到了需要定义如何在主app.js文件中的models.sequelize.sync()之后注入默认信息的文件。

播种:这个方法似乎做得比转储数据到数据库中,协会,即​​classmethods,(据我所知)更当土崩瓦解在这里不能使用,这使得更新许多一对多的关系几乎不可能。

模型定义:注入默认信息和关联到模型中的问题是,您必须以某种方式将其他模型定义导入到模型中,我似乎无法正确工作。

在这一点上,我挑选不同代码的方式并不是那么有趣,就像我在寻求什么样的想法/知道是获取具有关联到数据库中的默认数据的最佳方式。看起来这将是一个更受欢迎的问题,因为几乎每个应用程序都附带至少几条默认信息。我很想被告知我完全忽略了一些事情,而且其实很简单:)

感谢您提前讨论。

+0

更多的例子你有协会模型已经定义或您想创建新的关联? – AbhinavD

+0

我已经在模型中定义了工作关联。 – joshrathke

+0

我想我的主要问题是人们如何处理更复杂的播种场景。例如,我正在为将要安装在树莓派上的应用程序开发一个用户/用户角色系统,所以我需要能够快速地将需要关联到用户权限的几个用户角色种子。我不能在板载种子过程中发生这种情况。 – joshrathke

回答

0

如果我们已经定义了模型关联,我们不需要做任何额外的事情。让我们举一个例子,医生可以有一个以上的专业。在模型定义中,我们可以定义我们的关联。现在

classMethods: { 
     associate: function (models) { 
     models.doctor.hasMany(models.specialty, {foreignKey: 'doctor_npi'}); 
     } 

我们可以创建一个插入功能,并从播种

insertDoctor: function (models, firstname, lastname, specialties) { 
     return this.create({ 
      firstname: firstname, 
      lastname: lastname, 
      specialties: specialties, 
     }, { 
      include: [models.specialty], 
     }); 
     } 

调用与正确的参数应该工作这个函数调用它。

里有official documentation

+0

对,但是通过连接表的多对多关联怎么办?通常我会使用SetSpecialities()函数,但它在种子中不可用。 – joshrathke

相关问题