3

我一直在尝试使用 sequelize 为我的应用程序获取一些默认数据以播种到我的 PostgreSQL 数据库中。到目前为止,我只找到了一种方法来做到这一点,而且并不理想。

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

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

播种:当做的不仅仅是将数据转储到数据库中时,这种方法似乎崩溃了,关联,即类方法,(据我所知)不能在这里使用,这使得更新多对多关系几乎不可能。

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

在这一点上,我对挑选代码并不感兴趣,因为我正在寻找您认为/知道的最佳方式来获取与数据库关联的默认数据。似乎这将是一个更受欢迎的问题,因为几乎每个应用程序都附带至少几条默认信息。我很想被告知我完全忽略了一些东西,它实际上很简单:)

感谢您提前讨论。

4

1 回答 1

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],
        });
      }

使用正确的参数调用此函数应该可以工作。

官方文档中有更多示例

于 2017-07-20T04:52:43.650 回答