2016-07-07 3 views
0

Sequelizeで数週間働いています。私は既に他の類似の質問を読んだことがありますが、何も助けにならないようです。エラー:XModelはSequelizejsのYmodelに関連付けられていません

私はあなたに私のモデルをお見せしましょう:

Merchants.js '厳格な使用';

var Sequelize = require('sequelize'); 
var config = require(__base + '/server/config/config').provisioning; 
var sequelize = new Sequelize(config.database, config.user, config.password, config); 

var Merchants = sequelize.define('merchants', { 
    id: { 
    type: Sequelize.UUID, 
    primaryKey: true, 
    unique: true, 
    defaultValue: Sequelize.UUIDV4 
    }, 
    name: { 
    type: Sequelize.STRING(255) 
    }, 
    createdAt: { 
    type: Sequelize.DATE, 
    field: 'created_at' 
    }, 
    //more attributes 
}, { 
    classMethods: { 
    associate: function (models) { 
     Merchants.hasOne(models.Users, {foreignKey: 'merchantId'}) 
    } 
    } 
}); 

module.exports = Merchants; 

Users.js

'use strict'; 

var Sequelize = require('sequelize'); 
var config = require(__base + '/server/config/config').provisioning; 
var sequelize = new Sequelize(config.database, config.user, config.password, config); 

var Users = sequelize.define('users', { 
    id: { 
    type: Sequelize.UUID, 
    primaryKey: true, 
    unique: true, 
    defaultValue: Sequelize.UUIDV4 
    }, 
    merchantId: { 
    type: Sequelize.UUID, 
    field: 'merchant_id' 
    }, 
    createdAt: { 
    type: Sequelize.DATE, 
    field: 'created_at' 
    }, 
    // more attributes 
}, { 
    classMethods: { 
    associate: function (models) { 
     Users.belongsTo(models.Merchants, { foreignKey: 'merchantId' }); 
    } 
    } 
}); 

module.exports = Users; 

その後、私はこれやろうとしている:

Users.findAll({ 
    include: [{ 
     model: Merchants, 
     where: { state: 'ACTIVATED' } 
    }] 
    }).then(function (users) { 
    console.log(users.length); 
    }).catch(function (err) { 
    console.log(err); 
    }); 

を私は取得しています:[Error: merchants is not associated to users!]

を私はいくつかのをやりました私は別の質問で読んだことが何も動作するようです。それは愚かなことかもしれませんが、私が前に言ったように、初めてSequelizeで働いています。 associate方法はsequelize APIの一部ではなく、単に一般的なパターンであることに注意してください - -

答えて

0

は、団体が実際に設定されていることを確認してくださいあなたはその、実際に呼び出されることを確認する必要があり。たとえばに:これは、総理にかなって

fs 
    .readdirSync(__dirname) 
    .filter(function(file) { 
    return (file.indexOf(".") !== 0) && (file !== "index.js"); 
    }) 
    .forEach(function(file) { 
    var model = sequelize.import(path.join(__dirname, file)); 
    db[model.name] = model; 
    }); 

Object.keys(db).forEach(function(modelName) { 
    if ("associate" in db[modelName]) { 
    db[modelName].associate(db); 
    } 
}); 

https://github.com/sequelize/express-example/blob/master/models/index.js

+0

。どのように私はダムです。そしてそれはうまくいった、感謝! –

関連する問題