Las relaciones en sqlize / hasOne no funcionan

Estoy tratando de crear una relación 1: 1 entre la tabla de tiendas y el producto. Cada producto debe tener una clave externa de la tabla de la tienda y cada tienda debe tener una clave externa del producto.

He definido esas dos tablas.

module.exports = function( sequelize , DataTypes ){
    var shops = sequelize.define('shops',{
            id: {
                type: DataTypes.INTEGER,
                allowNull:false,
                primaryKey:true,
                autoIncrement:true
            },
            name:{
                type:DataTypes.STRING,
                allowNull:false
            },
            address:{
                type: DataTypes.STRING,
                allowNull:false
            },
            web:{
                type: DataTypes.STRING,
                allowNull:false
            },
            price:{
                type: DataTypes.INTEGER,
                allowNull:false
            }
    })
    return shops
}

`

var shop = require ('./ shops.js');

module.exports = function( sequelize , DataTypes ){
    var component = sequelize.define('component',{
            id: {
                type: DataTypes.INTEGER,
                allowNull:false,
                primaryKey:true,
                autoIncrement:true
            },
            name:{
                type: DataTypes.STRING,
                allowNull:false
            },
            storage:{
                type: DataTypes.INTEGER,
                allowNull:false
            },
            bilance:{
                type: DataTypes.INTEGER,
                allowNull:false
            }
    },{
        classMethods:{
         associate:function(models){
          component.hasOne(shop,{foreignKey:'foreign_key'})
         }
        }
    })
    return component;
}

dentro del archivo db.js un conectado usando.

db.shop.belongsTo(db.component)
db.component.hasOne( db.shop ,{foreignKey : 'shop_id'})

pero esto agregó componentId {clave externa} y shop_id otra clave externa, ambos a la tabla de la tienda.

Si reemplazo 1: 1 relación si 1: n ej.

db.component.hasMany(..)

Hace lo mismo, agrega ambas claves foráneas a la tabla de tiendas

Respuestas a la pregunta(1)

Su respuesta a la pregunta