如何扩展Sequelize模型

有没有一种方法来扩展(也许inheritance)模型来定义模型后添加钩子和字段?

所以像这样的东西:

User = sequelize.define("user", { name: sequelize.String }); makeStateful(User); // adds state,updated,added fields and some hooks 

这是不可能的。 但是你可以很容易地使其反过来:定义你的mixin,并在定义模型时使用它:

 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' }) })