【问题标题】:How to establish relationships using Sequelize如何使用 Sequelize 建立关系
【发布时间】:2016-01-27 15:15:13
【问题描述】:

我希望有人可以帮助我正确设置 Sequelize 中的关系。我相信我已经正确设置了模型,但我不确定,因为我以前从未使用过 api,并且文档令人困惑。我附上了一张我认为表格应该是什么样子的图片,下面是一些我认为应该发生的代码sn-ps,但我不知道。

关于我的数据库设计是否准确以及我的 sequelize 关联(hasMany、belongsTo 等)是否正确的任何指示都会非常有帮助!

用户模型

'use strict';

module.exports = function(sequelize, DataTypes) {

  //Define the user table, and its columns, data types, attributes
  var User = sequelize.define('User', {
    user_id: {...},
    user_name: {...}
   },    
   {
     //Define the constraints, such as foreign key
     classMethods:{
        associate: function(models) {
            User.belongsToMany(models.Group);
            User.hasMany(models.Old_Password);
        }
     }
   }); 

  return User;
};

角色模型

'use strict';

module.exports = function(sequelize, DataTypes){

  var Role = sequelize.define('Role',{
    role_id: {...},
    role_name:{...}
   },
   {
   //Define the constraints, such as foreign key
     classMethods:{
        associate: function(models){
            Role.belongsTo(models.User);
        }
     }
  }); 

  return Role;
};

组模型

'use strict';

module.exports = function(sequelize, DataTypes){

  var Group = sequelize.define('group', {
    group_id: {...},
    group_name: {...},                
   });

  return Group;
};

密码模型

'use strict';

module.exports = function(sequelize, DataTypes){

  //Define the table, and its columns, data types, attributes
  var Old_Password = sequelize.define('Old_Password', {
    old_password_id: {...},
    old_password_value: {...}
   },    
  {
  //Define the constraints, such as foreign key
    classMethods:{
        associate: function(models){
            Old_Password.hasOne(models.User);
        }
    }
  }); 

  return Old_Password;
};

Sample Table Setup

【问题讨论】:

    标签: javascript node.js postgresql sequelize.js


    【解决方案1】:

    数据库设计准确。但是,您需要定义UserGroup 之间的关系。这是一个 多对多 关系,因此您需要向 User 模型添加另一个约束:

    classMethods:{
      associate: function(models){
        User.belongsToMany(models.Group, {
          // Define the join table
          through: 'user_group',
          // Define the foreign key
          foreignKey: 'group_id'
        });
        models.Group.belongsToMany(User, {
          through: 'user_group',
          foreignKey: 'user_id'
        });
        User.hasMany(models.Old_Password);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 2023-04-11
      • 2020-12-09
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多