क्या सीक्वेलाइज माइग्रेशन आपके मॉडल फाइलों को आपके डेटाबेस के अनुरूप रखना चाहिए?
मैं एक साधारण परियोजना बूटस्ट्रैप और एक मॉडल बनाने के लिए अगली कड़ी cli का उपयोग करता था node_modules/.bin/sequelize model:generate --name User --attributes email:string
। मैंने बिना किसी मुद्दे के साथ यह प्रवास किया।
फिर मैंने उपयोगकर्ता ईमेल विशेषता में एक नोटनल बाधा जोड़ने के लिए निम्न माइग्रेशन फ़ाइल बनाई।
updateEmail माइग्रेशन
const models = require("../models")
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.changeColumn(models.User.tableName, "email",{
type: Sequelize.STRING,
allowNull: false,
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.changeColumn(models.User.tableName, "email",{
type: Sequelize.STRING,
});
},
};
डेटाबेस स्कीमा ने बाधा को जोड़ने के लिए अद्यतन किया लेकिन मॉडल फ़ाइल ने नहीं किया। क्या आप माइग्रेशन बनाते समय मॉडल फ़ाइलों को स्वचालित रूप से अपडेट करने का एक तरीका है?
उत्तर:
जवाब के लिए 3 № 1क्या आपके पास मॉडल फ़ाइलों को स्वचालित रूप से अपडेट करने का एक तरीका है पलायन करें?
दुर्भाग्यवश नहीं। सीक्वेलिज़ मॉडल और माइग्रेशन के बीच सिंक्रनाइज़ेशन का कोई स्तर उनके प्रारंभिक निर्माण को छोड़कर नहीं है sequelize model:create
। हालाँकि, इस प्रश्न में सुझाया गया वर्कफ़्लो यह है कि अद्यतन प्रचारित होने चाहिए से माइग्रेशन सेवा मेरे मॉडल के। यह मुझे थोड़ा भ्रमित करता है, क्योंकि आमतौर पर माइग्रेशन को मॉडल से परिवर्तनों से ऑटो-जनरेट किया जाना है, जरूरी नहीं कि इसके विपरीत।
इन सुविधाओं पर नज़र रखने वाले खुले मुद्दे हैं जो आपको सदस्यता लेने में मददगार हो सकते हैं:
- मॉडल से प्रारंभिक माइग्रेशन उत्पन्न करें?
- ऑटो-माइग्रेशन बनाएँ
- मौजूदा मॉडल को अपडेट करने के लिए माइग्रेशन उत्पन्न करना संभव है?
सामुदायिक सुझाव / समाधान:
को देखें https://stackoverflow.com/a/28431648/8954866
जैसा कि सुझाव दिया गया है, एक वर्कअराउंड का उपयोग करके मॉडल को फिर से बनाना है sequelize-cli
जब साधारण परिवर्तनों की शुरुआत। हालाँकि, इस कार्यप्रणाली की स्पष्ट सीमाएँ हैं क्योंकि कई विन्यास संघों से परिभाषित करना संभव नहीं है।
इसके अतिरिक्त, एक npm पैकेज sequelize-ऑटो माइग्रेशन मौजूद है जो माइग्रेशन उत्पन्न करने के लिए समर्थन प्रदान करता है, हालाँकि यह अति सक्रिय परियोजना नहीं लगती।
निष्कर्ष:
क्या सीक्वेलाइज़ माइग्रेशन को मॉडल फ़ाइलों को अपडेट करना चाहिए?
Sequelize
/sequelize-cli
अभी तक इस सुविधा का समर्थन नहीं करता है।
क्या ORM को माइग्रेशन उत्पन्न करने के लिए ऑटो बनाने के उपकरण बनाने चाहिए? हां, यह वांछित कार्यशीलता है क्योंकि अन्यथा डेवलपर्स को सिद्धांतों का उल्लंघन करने के लिए मजबूर किया जाता है सूखी और विभिन्न फाइलों में एक ही तर्क का प्रबंधन।