2013-10-30 3 views
1

모델을 정의한 후 후크 및 필드를 추가하도록 모델을 확장 (어쩌면 상속) 할 수 있습니까?확장 방법 후속 모델

그래서 이런 일이 :

User = sequelize.define("user", { 
    name: sequelize.String 
}); 

makeStateful(User); // adds state,updated,added fields and some hooks 

답변

5

이 순간에 할 수 없습니다. 그러나 쉽게 다른 방식으로 작동하게 할 수 있습니다. 모델을 정의 할 때 이전에 믹스 인을 정의하고이를 사용하십시오.

var Sequelize = require('sequelize') 
    , sequelize = new Sequelize('sequelize_test', 'root') 

var mixin = { 
    attributes: { 
    state: Sequelize.STRING, 
    added_at: Sequelize.DATE 
    }, 
    options: { 
    hooks: { 
     beforeValidate: function(instance, cb) { 
     console.log('Validating!!!') 
     cb() 
     } 
    } 
    } 
} 

var User = sequelize.define(
    'Model' 
, Sequelize.Utils._.extend({ 
    username: Sequelize.STRING 
    }, mixin.attributes) 
, Sequelize.Utils._.extend({ 
    instanceMethods: { 
     foo: function() { 
     return this.username 
     } 
    } 
    }, mixin.options) 
) 

User.sync({ force: true }).success(function() { 
    User.create({ username: 'foo' }).success(function(u) { 
    console.log(u.foo()) // 'foo' 
    }) 
}) 
+4

그래도 여전히 가능하지 않습니까? –