केस 1: डेटाबेस प्रारंभ उद्देश्य डेटाबेस संरचना यह बेहतर है के प्रारंभ के दौरान संबंधों को जोड़ने के लिए बस के बजाय मैन्युअल रूप से माइग्रेशन का उपयोग कर उन्हें जोड़ने का sync
विधि का उपयोग करने के लिए है
हैं। यदि आपके मॉडल सही ढंग से डिज़ाइन किए गए हैं और संबंधों को परिभाषित किया गया है, तो वे sync
विधि के निष्पादन के दौरान स्वचालित रूप से बनाए जाएंगे।
sequelize express example पर एक नज़र डालें। मॉडल निर्देशिका में आप तीन फ़ाइलें:
index.js
- जो सभी मॉडलों शामिल
task.js
- कार्य मॉडल
user.js
- task.js
सामग्री पर उपयोगकर्ता मॉडल
देखो, लाइन 7 से शुरू निम्नलिखित कोड उपयोगकर्ता और कार्य मॉडल के बीच संबंध बनाता है:
classMethods: {
associate: function(models) {
Task.belongsTo(models.User, {
onDelete: "CASCADE",
foreignKey: {
allowNull: false
}
});
}
}
यदि आप मॉडल फ़ाइलों में सही ढंग से अपने संबंध तैयार करते हैं, तो सिंक आपके लिए विदेशी कुंजी बनाएगा। इस मामले में प्रवास जरूरी नहीं है।
मैं आपको पूरे एक्सप्रेस-उदाहरण readme.md
पढ़ने और रिपोजिटरी फ़ाइलों को ब्राउज़ करने के लिए प्रोत्साहित करता हूं ताकि यह देखने के लिए कि चीजें एक्सप्रेस और अनुक्रमित कैसे होती हैं।
केस 2: डेटाबेस संरचना प्रवास
मामले में आप पहले से ही कुछ डेटा जो आप रखना चाहते हैं, तो आप, प्रवास स्क्रिप्ट का उपयोग करने की जरूरत है क्योंकि सिंक अपने डेटाबेस पुनर्गठन करने के लिए एक ही रास्ता इसे नष्ट करने के लिए है अपने सभी डेटा के साथ पूरी तरह से।
आप मूल migrations in the sequelize docs के बारे में पढ़ सकते हैं। दुर्भाग्यवश दस्तावेज़ों में संबंध बनाने में शामिल नहीं है। आइए मान लें कि आप निम्न संबंध बनाना चाहते हैं: उपयोगकर्ता समूह से संबंधित है। संबंध के उपयोगकर्ता पक्ष पर कॉलम बनाने के लिए, आप addColumn
विधि का उपयोग कर सकते हैं।
queryInterface.addColumn(
'user',
'group_id',
{
type: Sequelize.INTEGER,
allowNull: true
}
)
दुर्भाग्य से एक अच्छा समारोह (अभी तक) आप के लिए विदेशी कुंजी बाधा पैदा करने के लिए नहीं है, लेकिन आप इसे मैन्युअल का उपयोग कर sequelize क्वेरी विधि कर सकते हैं। PostgreSQL उदाहरण:
queryInterface.sequelize.query("ALTER TABLE user
ADD CONSTRAINT user_group_id_fkey FOREIGN KEY (group_id)
REFERENCES group (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE;");
संपादित करें: जोड़ा गया डेटाबेस संरचना प्रवास मामले
आप प्रारंभिक डेटाबेस संरचना बनाने के लिए माइग्रेशन का उपयोग करना चाहते हैं या आप माइग्रेशन का उपयोग करके अपनी वर्तमान डेटाबेस संरचना को अपडेट करना चाहते हैं? – ezpn
मैं प्रारंभिक डेटाबेस संरचना पहले – loics2