如何在sequelize node.js中添加现有模型中的多对多关联?

时间:2017-02-13 07:29:54

标签: javascript node.js associations sequelize.js

我想使用sequelize在我的节点应用中添加多对多关联。我是sequelize ORM的新人。

我有一个eixsting模型user.js.我想创建新的模型项目并添加想要多对多的关联

为此我运行sequelize create table并创建了迁移 现在在关联部分我做了很多很多关联创建的

我发现有多个这样做

Project.belongsToMany(User, {through: 'UserProject'});

但是我在哪里写User.belongsToMany(Project, {through: 'UserProject'});因为用户模型是现有的

我想知道第二件事是UserProject由此自动创建还是需要手动创建它?

1 个答案:

答案 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表格中添加任何其他额外字段,系统会自动使用字段UserIdProjectId创建该字段(如果您使用sequelize.sync() } method - 否则你必须在迁移文件中创建表)。在其他情况下,当您想要添加其他字段时,您必须自己创建这样的模型。