2013-10-28 12 views
5

アソシエーション/外部キーが必要なデータモデルがあります。鶏肉/卵の状況に入らずにモデル作成中にその制約を適用する方法はありますか?Sequelize.js - "create"または "build"コール中のモデルの関連付け

私がUserクラスを持っていて、少なくとも1つのdeviceがそれに関連付けられている必要があるとします。同様に、deviceはユーザーに属している必要があります。この(未テストコード、構文エラーを気にしない)ような何か:

User = db.define("user", { 
    name: Sequelize.STRING 
}) 

Device = db.define("device", { 
    uuid: Sequelize.STRING 
}) 

User.hasMany(Device) 

は、私はすべてのDeviceの情報だけでなく、すべてのUserの情報を持っていることを、createが最初に呼び出されたときようにしたいです。 「太ったモデル、すっきりしたコントローラ」をつけて、これを私のモデルに入れたいと思います。このようなことは可能でしょうか?

user = User.create(
    name: "jesse" 
    device: 
     uuid: "84e824cb-bfae-4d95-a76d-51103c556057" 
) 

createメソッドを無効にすることはできますか?または、あるタイプのbeforeイベントフックを使用できますか?

答えて

6

現在のマスターはフックをサポートしています。

var User = sequelize.define('User', { 
    username: DataTypes.STRING 
}, { 
    hooks: { 
    beforeCreate: function(user, next) { 
     makeYourCheck(function() { 
     next("a string means that an error happened.") 
     }) 
    } 
    } 
}) 

あなたは詳細についてPRを確認することができます。https://github.com/sequelize/sequelize/pull/894

関連する問題