2015-03-28 21 views
5

Tôi đang cố gắng tạo móc mẫu tự động tạo bản ghi liên kết khi mô hình chính đã được tạo. Làm thế nào tôi có thể truy cập các mô hình khác của tôi trong chức năng móc khi tệp mô hình của tôi được cấu trúc như sau?Truy cập các mô hình khác trong chức năng móc mô hình Sequelize

/** 
* Main Model 
*/ 
module.exports = function(sequelize, DataTypes) { 

    var MainModel = sequelize.define('MainModel', { 

    name: { 
     type: DataTypes.STRING, 
    } 

    }, { 

    classMethods: { 
     associate: function(models) { 

     MainModel.hasOne(models.OtherModel, { 
      onDelete: 'cascade', hooks: true 
     }); 

     } 
    }, 

    hooks: { 

     afterCreate: function(mainModel, next) { 
     // ------------------------------------ 
     // How can I get to OtherModel here? 
     // ------------------------------------ 
     } 

    } 

    }); 


    return MainModel; 
}; 

Trả lời

16

Bạn có thể truy cập mô hình khác thông qua sequelize.models.OtherModel.

+0

'sequelize' không khả dụng. – user1107173

2

Bạn có thể sử dụng this.associations.OtherModel.target.

/** 
* Main Model 
*/ 
module.exports = function(sequelize, DataTypes) { 

    var MainModel = sequelize.define('MainModel', { 

    name: { 
     type: DataTypes.STRING, 
    } 

    }, { 

    classMethods: { 
     associate: function(models) { 

     MainModel.hasOne(models.OtherModel, { 
      onDelete: 'cascade', hooks: true 
     }); 

     } 
    }, 

    hooks: { 

     afterCreate: function(mainModel, next) { 
     /** 
     * Check It! 
     */ 
     this.associations.OtherModel.target.create({ MainModelId: mainModel.id }) 
     .then(function(otherModel) { return next(null, otherModel); }) 
     .catch(function(err) { return next(null); }); 
     } 

    } 

    }); 


    return MainModel; 
}; 
Các vấn đề liên quan