簡體   English   中英

如何擴展Sequelize模型

[英]How to extend Sequelize model

有沒有一種方法可以擴展(也許繼承)模型以在定義模型后添加鈎子和字段?

所以像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM