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

标签 javascript node.js associations sequelize.js

我想使用 sequelize 在我的 Node 应用程序中添加多对多关联。我是 Sequelize ORM 的新手。

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

为此,我运行 sequelize create table 和 migration created 现在在关联部分,我所做的是创建了多对多关联

我找到了很多这样的东西

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

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

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

最佳答案

最好使用 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() 方法 - 否则您必须在迁移文件中创建表)。在其他情况下,当您想要添加其他字段时,您将不得不自己创建这样的模型。

关于javascript - 如何在 sequelize node.js 中的现有模型中添加多对多关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198677/

相关文章:

javascript - 如何从一组元素中删除除创建的元素之外的所有边框?

javascript - Eslint 规则/Vscode 设置防止导入没有索引的文件夹

javascript - 在 Chrome 控制台中调试 javascript

node.js - 创建 react 应用程序+ Visual Studio + F5 = "Unexpected token import"

ruby-on-rails - 为什么会出现关联类型不匹配?

CakePHP 未在生产服务器上加载与模型相关的属性

javascript - 导入文件的变量未更新

javascript - 可写流的关闭事件处理程序的第一个参数是什么?

ruby-on-rails - 在 Rails 3 中通过范围和关联保持 DRY

javascript - 从 Node.js 函数回调获取 MySQL 结果的正确方法?