2016-01-02 5 views
13

में हैसोन और बेलोंग्स के बीच अंतर sequelize ORM के साथ sails.js ऐप विकसित कर रहा हूं। जब मैं BelongsTo और HasOne का उपयोग करने की आवश्यकता है, तो मैं थोड़ा उलझन में हूं।Sequelize ORM

प्रलेखन कहा गया है कि:

BelongsTo संघों संघों हैं जहां एक-से-एक संबंध के लिए विदेशी प्रमुख स्रोत मॉडल पर मौजूद है।

हैसोन एसोसिएशन ऐसे संगठन हैं जहां के लिए विदेशी कुंजी लक्ष्य मॉडल पर एक-से-एक संबंध मौजूद है।

क्या वहां निर्दिष्ट जगह से अलग कोई अंतर है? क्या व्यवहार अभी भी किसी भी मामले में समान है?

उत्तर

24

यह अधिक सार्वभौमिक समस्या है।

मुख्य अंतर अर्थात् में है। आपको यह तय करना होगा कि रिश्ते क्या है (कुछ मूर्ख उदाहरण):

मैन में केवल एक दायां हाथ है। दायां हाथ एक आदमी से संबंधित है।

कह रही है यह विपरीत रूप से एक छोटे से अजीब लग रहा है:

सही हाथ एक आदमी है। एक आदमी दाहिने हाथ से संबंधित है।

आपके पास सही हाथ के बिना आदमी हो सकता है। लेकिन अकेले दाहिने हाथ बेकार है।

sequelize में अगर RightArm और पुरुषों मॉडल हैं, यह हो सकता है लगता है जैसे:

Man.hasOne(RightArm); 
RightArm.belongsTo(Man); 

और वहाँ भी db तालिका संरचना में अंतर है तुम नोटिस के रूप में:

BelongsTo पर foreignKey जोड़ देगा स्रोत जहां कोई है पर लक्ष्य जोड़ देगा (Sequelize तालिका 'राइटअर्म' में नया कॉलम 'मैनआईड' बनाता है, लेकिन 'मैन' तालिका में 'राइटअर्म आईडी' कॉलम नहीं बनाता है)।

मुझे कोई और अंतर नहीं दिखता है।

+0

तो इस मामले में, क्या मुझे या तो 'मैन.hasOne (RightArm); या 'RightArm.belongsTo (मैन) का उपयोग करना चाहिए;'? या दोनों का उपयोग करें? –

+0

ज्यादातर मामलों में मैं उन्हें दोनों का उपयोग करूंगा –

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