我想使用sequelize在我的节点应用中添加多对多关联。我是sequelize ORM的新人。
我有一个eixsting模型user.js.我想创建新的模型项目并添加想要多对多的关联
为此我运行sequelize create table并创建了迁移 现在在关联部分我做了很多很多关联创建的
我发现有多个这样做
Project.belongsToMany(User, {through: 'UserProject'});
但是我在哪里写User.belongsToMany(Project, {through: 'UserProject'});
因为用户模型是现有的
我想知道第二件事是UserProject
由此自动创建还是需要手动创建它?
答案 0 :(得分:2)
最好使用sequelize-cli
并使用sequelize init
工具,该工具会创建一个文件,将所有模型聚集在一起并创建它们之间的关联。关联是通过类方法associate
完成的,该方法应该在所有模型中实现(与其他模型相关联)。
此方法可能如下所示(如果是User
模型):
classMethods: {
associate: function(models){
this.belongsToMany(models.Project, { through: 'UserProject' });
}
}
等同于Project
模型:
classMethods: {
associate: function(models){
this.belongsToMany(models.User, { through: 'UserProject' });
}
}
如果您不想在UserProject
表格中添加任何其他额外字段,系统会自动使用字段UserId
和ProjectId
创建该字段(如果您使用sequelize.sync()
} method - 否则你必须在迁移文件中创建表)。在其他情况下,当您想要添加其他字段时,您必须自己创建这样的模型。