Sequelize没有创建外键?

时间:2017-07-29 21:57:53

标签: node.js orm sequelize.js

我在使用Sequelize和外键时遇到了一些问题,我在同步时没有在数据库中创建

这是我的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;
}

这是我的Groups.js

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

已经尝试过这个:

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

但没有结果。

Obs:我在项目开始时有models.sequelize.sync({force:true})

我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

类似问题:删除了classMethod 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

答案 1 :(得分:1)

你使用的是什么版本的续集? 我使用版本“sequelize”:“^ 4.31.2”与mysql2包,面临同样的问题。我切换回版本“sequelize”:带有mysql包的“^ 2.0.0”并解决了问题。

我认为手动定义外键是更好的方法。