Sequelize not creating foreign key?

梦想与她 提交于 2019-12-10 21:50:00

问题


I've been having some problems with Sequelize and foreign keys, they're not created in the database when I sync

this is my Users.js

module.exports = function(sequelize, DataTypes) {
    var Users = sequelize.define('users', {
      name: DataTypes.STRING      
    }, {
        classMethods: {
            associate: function(models) {
                Users.belongsTo(models.group);
            }
        }
    });
    return Users;
}

and this is my Groups.js

module.exports = function(sequelize, DataTypes) {
  var Group = sequelize.define("group", {
    nome: DataTypes.STRING
  });
  return Group;
};

Already tried this:

var Group = require('./Group');
module.exports = function(sequelize, DataTypes) {
    var Users = sequelize.define('users', {
      name: DataTypes.STRING    
    });
    Users.hasOne(Group);
    return Users;
}

but no result.

Obs: I have models.sequelize.sync({ force: true }) on project start

what am I missing?

Thanks!


回答1:


Similar issue: classMethod removed https://stackoverflow.com/a/45473628/6811324

User.hasOne(Group, {foreignKey: 'userId'}) // userId foreignKey on Group

Users.hasOne(Group); // UserId foreignKey on Group

    or

Users.belongsTo(models.Group, {foreignKey: 'groupId'}); // groupId to User



回答2:


What version of sequelize are you using? I was using version "sequelize": "^4.31.2" with mysql2 package and faced same problem. I switched back to version "sequelize": "^2.0.0" with mysql package and problem solved.

I think manually defining foreign key is better way to go.



来源:https://stackoverflow.com/questions/45394449/sequelize-not-creating-foreign-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!