/ / क्या माइग्रेशन को मॉडल फ़ाइलों को अद्यतन करना चाहिए? - अगली कड़ी। सीज, सीक्वेलिज-सीएलआई

माइग्रेशन को मॉडल फ़ाइलों को अपडेट करना चाहिए? - sequelize.js, sequelize-cli

क्या सीक्वेलाइज माइग्रेशन आपके मॉडल फाइलों को आपके डेटाबेस के अनुरूप रखना चाहिए?

मैं एक साधारण परियोजना बूटस्ट्रैप और एक मॉडल बनाने के लिए अगली कड़ी 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 को माइग्रेशन उत्पन्न करने के लिए ऑटो बनाने के उपकरण बनाने चाहिए? हां, यह वांछित कार्यशीलता है क्योंकि अन्यथा डेवलपर्स को सिद्धांतों का उल्लंघन करने के लिए मजबूर किया जाता है सूखी और विभिन्न फाइलों में एक ही तर्क का प्रबंधन।