2013-02-15 13 views
7

यह एक शर्मनाक शुरुआती प्रश्न है, लेकिन मैं सिर्फ सेक्विलाइज के बारे में अपनी चिंताओं को व्यवस्थित करना चाहता हूं। मैं अपने स्रोत को व्यवस्थित रखने के लिए प्रत्येक मॉडल को अपनी फ़ाइल में विभाजित करना चाहता हूं। ऐसा करने के लिए मुझे प्रत्येक फ़ाइल की शुरुआत में require("sequelize') और var sequelize = new Sequelize('DB-Name', 'DB-User', 'DB-Password'); की आवश्यकता है।प्रति मॉडल अलग-अलग फाइलों का उपयोग करके सेक्विलाइज के साथ नोडज

मेरा प्रश्न है, क्या यह प्रति मॉडल डेटाबेस के लिए एक नया कनेक्शन बनाएगा, या फिर यह एक ही कनेक्शन का फिर से उपयोग करेगा? क्या मुझे "प्रति मॉडल एक मॉडल" की पूरी अवधारणा को छोड़ देना चाहिए और केवल एक मास्टर Models.js फ़ाइल बनाना चाहिए?

मैं नोड के लिए बहुत नया हूं और अभी भी इसके सम्मेलनों में उपयोग कर रहा हूं। सहायता के लिए धन्यवाद!

उत्तर

10

हर मॉडल का अपना मॉड्यूल है, जो आप निर्यात के रूप में परिभाषित किया गया है:

module.exports = function(sequelize, DataTypes){ 
    return sequelize.define('Brand', { 
     name: { 
      type: DataTypes.STRING, 
      unique: true, 
      allowNull: false }, 
     description: { 
      type: DataTypes.TEXT, 
      allowNull: false }, 
     status: { 
      type: DataTypes.INTEGER, 
      unique: false, 
      allowNull: true } 
    }) 
}; 

तब बस अपने मॉड्यूल आयात जब आप Sequelize प्रारंभ (और तुम यहाँ कई मॉडल आयात कर सकते हैं):

var Sequelize = require("sequelize"); 
var config = require("../../config/config.js"); 
var sequelize = new Sequelize(config.database, config.username, config.password, 
    { dialect: config.dialect, host: config.host, port: config.port, 
     omitNull: true, logging: false }); 
var Brand = require("./Brand").Brand; 

आप http://nodejs.org/api/modules.htm पर मॉड्यूल पर और अधिक पढ़ सकते हैं लेकिन उपर्युक्त उदाहरण आपको प्रारंभ करना चाहिए।

+2

मुझे आपके द्वारा पोस्ट किए गए कार्यों के समान ही एक अच्छा समाधान मिला था। केवल अंतर है कि मैंने 'sequelize.import (' ./ file ')' फ़ंक्शन का उपयोग किया है। हालांकि किसी भी तरह से काम करता है! एक और विकल्प के लिए धन्यवाद। – KayoticSully

0

यदि कोई एक्मास्क्रिप्ट 6 दृष्टिकोण का उपयोग करना चाहता है तो सीक्वेलिज़ दस्तावेज़ here में स्पष्टीकरण के साथ ग्रिट उदाहरण है।

// in your server file - e.g. app.js 
const Project = sequelize.import(__dirname + "/path/to/models/project") 

// The model definition is done in /path/to/models/project.js 
// As you might notice, the DataTypes are the very same as explained above 
module.exports = (sequelize, DataTypes) => { 
    return sequelize.define("project", { 
    name: DataTypes.STRING, 
    description: DataTypes.TEXT 
    }) 
} 

आयात विधि कॉलबैक को तर्क के रूप में भी स्वीकार कर सकती है।

sequelize.import('project', (sequelize, DataTypes) => { 
    return sequelize.define("project", { 
    name: DataTypes.STRING, 
    description: DataTypes.TEXT 
    }) 
}) 
संबंधित मुद्दे