Node.js Sequelize中的种子数据具有多对多关系

Node.js Sequelize中的种子数据具有多对多关系,node.js,sequelize.js,sequelize-cli,Node.js,Sequelize.js,Sequelize Cli,我在尝试使用sequelize将应用程序的一些默认数据植入PostgreSQL数据库时遇到了麻烦。到目前为止,我只找到了一种方法,但并不理想 我的主要问题是这里是否有人知道这样做的“最佳实践”方法 到目前为止,我已经尝试使用Seeds,在同步每个模型后注入默认信息,最后我又回到了需要文件的阶段,这些文件定义了如何在主app.js文件中的models.sequelize.sync()之后注入默认信息 播种:在将数据转储到数据库之外,这种方法似乎会崩溃,据我所知,这里不能使用关联,即classmet

我在尝试使用sequelize将应用程序的一些默认数据植入PostgreSQL数据库时遇到了麻烦。到目前为止,我只找到了一种方法,但并不理想

我的主要问题是这里是否有人知道这样做的“最佳实践”方法

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

播种:在将数据转储到数据库之外,这种方法似乎会崩溃,据我所知,这里不能使用关联,即classmethods,这使得更新多对多关系几乎不可能

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

在这一点上,我对分离代码不感兴趣,而是在寻找您认为/知道的将具有关联的默认数据获取到数据库中的最佳方法。这似乎是一个更受欢迎的问题,因为几乎每个应用程序都附带至少几条默认信息。我希望有人告诉我,我完全忽略了一些事情,其实很简单:)


感谢您提前进行讨论。

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

classMethods: {
      associate: function (models) {
        models.doctor.hasMany(models.specialty, {foreignKey: 'doctor_npi'});
      }
现在我们可以创建一个insert函数并从种子设定调用它

insertDoctor: function (models, firstname, lastname, specialties) {
        return this.create({
          firstname: firstname,
          lastname: lastname,
          specialties: specialties,
        }, {
          include: [models.specialty],
        });
      }
使用正确的参数调用此函数应该可以工作


中有更多的例子,您的模型中是否已经定义了关联,或者您想创建新的关联?我已经在模型中定义了工作关联。我想我的主要问题是人们如何处理更复杂的播种场景。例如,我正在一个应用程序上开发一个用户/用户角色系统,该应用程序将安装在raspberry pies上,因此我需要能够快速地植入一些需要用户权限关联的用户角色。我无法在板载种子进程中实现这一点。对,但是通过联接表的多对多关联呢。通常我会使用SetSpecialities()函数,但它在seed中不可用。@joshrathke您找到解决方法了吗?