我已经搞砸了尝试使用sequelize为我的应用程序获取一些默认数据以种子进入我的PostgreSQL数据库。到目前为止,我只找到了一种方法,但这并不理想。
我的主要问题是,如果有人知道这种“最佳实践”的方式。
到目前为止,我尝试使用Seeds,在同步每个模型后注入默认信息,最后我又回到了需要定义我想如何在主应用程序中models.sequelize.sync()
之后注入默认信息的文件。 js文件。
播种:这种方法在做的不仅仅是将数据转储到数据库中时,似乎分崩离析,这种关联,即类方法,(据我所知)不能在这里使用,这使得更新许多 - To-Many关系几乎不可能。
模型定义:将关联的默认信息注入模型的问题是,您必须以某种方式将其他模型定义导入到模型中,这似乎无法正常工作。
在这一点上,我并没有那么有趣地挑选代码,因为我正在寻找你认为/知道的最佳方法来获得与数据库有关联的默认数据。这似乎是一个更受欢迎的问题,因为几乎每个应用程序都附带至少一些默认信息。我很想被告知,我完全忽视了一些东西,而且实际上非常简单:)
感谢您提前讨论。
答案 0 :(得分: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],
});
}
使用正确的参数调用此函数应该有效。
中有更多示例