2013-10-28 10 views
5

मेरे पास एक डेटा मॉडल है जहां एक एसोसिएशन/विदेशी कुंजी की आवश्यकता होती है। चिकन/अंडा की स्थिति में बिना मॉडल निर्माण के दौरान उस बाधा को लागू करने के लिए कोई रास्ता संभव है?Sequelize.js - "निर्माण" या "बिल्ड" कॉल के दौरान मॉडल एसोसिएशन

मान लें कि मेरे पास User कक्षा है जिसके लिए कम से कम एक device इसके साथ जुड़ने की आवश्यकता है। इसी तरह, device किसी उपयोगकर्ता से संबंधित होना चाहिए। कुछ इस तरह (अपरीक्षित कोड, वाक्यविन्यास त्रुटियों कोई आपत्ति नहीं है):

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

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

User.hasMany(Device) 

मैं यह सुनिश्चित करना है कि जब create पहले कहा जाता है चाहता हूँ, कि मैं सभी Device जानकारी के साथ ही सभी User जानकारी नहीं है। "वसा मॉडल, पतला नियंत्रक" के साथ रखते हुए मैं इसे अपने मॉडल में रखना चाहता हूं। क्या ऐसा कुछ करना संभव है?

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

क्या मैं create विधि को ओवरराइड कर सकता हूं? या क्या कुछ प्रकार का before इवेंट हुक सहेज सकता है जिसका मैं उपयोग कर सकता हूं?

उत्तर

6

वर्तमान मास्टर हुक के लिए समर्थन है। https://github.com/sequelize/sequelize/pull/894

:

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

आप अधिक जानकारी के लिए पीआर जाँच कर सकते हैं

संबंधित मुद्दे