2017-07-29 39 views
1

我一直有一些问题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; 
} 

但没有结果。

观测值:我有models.sequelize.sync({力:真正})项目启动

我缺少什么?

谢谢!

回答

1

类似的问题:类方法去除 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 
0

您正在使用什么版本sequelize的? 我正在使用版本“sequelize”:“^ 4.31.2”与mysql2包并面临同样的问题。我切换回版本“sequelize”:“^ 2.0.0”与MySQL包和问题解决。

我认为手动定义外键是更好的选择。