如何在sequelize node.js的现有模型中添加多对多关联?
我想使用sequelize在我的节点应用程序中添加许多到许多关联。 我是新的ORM的续集。
我有一个eixsting模型user.js。 我想创build新的模型项目,并添加到多对多的关联
为此,我运行sequelize创build表和迁移创build现在在关联部分我做多对多创build
我发现多个这样做
Project.belongsToMany(User, {through: 'UserProject'});
但我在哪里写User.belongsToMany(Project, {through: 'UserProject'});
因为用户模式已经存在
第二件事,我想知道UserProject
自动创build的UserProject
或需要手动创build它?
使用sequelize-cli
并使用sequelize init
工具是一个很好的做法,它会创build一个将所有模型聚集在一起的文件,并在它们之间build立关联。 该关联是通过类方法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
创build它(如果使用sequelize.sync()
方法 – 否则必须在迁移文件中创build表)。 在其他情况下,当你想添加其他字段时,你将不得不自己创build这样一个模型。