2012-10-05 23 views
5

Node.js और SQL-like डेटाबेस का उपयोग करते हुए, डेटाबेस विरासत मॉडल को लागू करने के लिए मेरे विकल्प क्या हैं? मैंने चारों ओर देखा और ऐसा लगता है कि Node.js में noSQL डेटाबेस की लोकप्रियता के कारण, डेटाबेस विरासत को अनदेखा किया जाता है।डेटाबेस विरासत मॉडल Node.js

मैं एक बहुत ही साधारण चीज़ को पूरा करने की कोशिश कर रहा हूं: कुछ व्यवसाय नियमों के आधार पर उपयोगकर्ता तालिका का विस्तार करें। सादगी के लिए, मैं रीडर और मॉडरेटर टेबल और कक्षाएं जोड़ना चाहता हूं जिनके गुण अलग-अलग होंगे। यह ऐसा कुछ है जो एनएचईबीनेटनेट का उपयोग करके .NET में पूरा करने के लिए अपेक्षाकृत आसान होगा। क्या मैं एक ही टेबल में सब कुछ चिपकाने के बिना एक ही परिणाम प्राप्त कर सकता हूं? यदि नहीं, तो सबसे अच्छे विकल्प क्या हैं?

बीटीडब्ल्यू, मैं Sereelize के माध्यम से PostreSQL के साथ Node.js का उपयोग कर रहा हूँ।

उत्तर

5

मैंने SQL डेटाबेस के लिए ओआरएम नहीं देखा है जो अभी तक विरासत का समर्थन करता है। फिर भी, मेरा मानना ​​है कि जे एस की प्रकृति है कि आप का आनंद सकता है (मुझे यकीन है कि करते हैं) के लिए अन्य अवसरों धन्यवाद देखते हैं:

jugglingdb (एक मैं सिफारिश करेंगे), के साथ underscore.js (कुछ मिलकर सबसे Node.js प्रोग्रामर चाहिए का उपयोग करना पर ध्यान देना) आप निम्नलिखित की तरह कुछ कर सकते हैं:

var user_common_properties = { 
    name:   String, 
    bio:   Schema.Text, 
    approved:  Boolean, 
    joinedAt:  Date, 
    age:   Number 
}; 
var User = schema.define('User', user_common_properties); 

var Moderator = schema.define('Moderator', _.extend(user_common_properties, { 
    power : String, 
    level : Number 
})); 
var Reader = schema.define('Moderator', _.extend(user_common_properties, { 
    lurker : Boolean 
})); 

जबकि मैं मानता हूँ कि यह वही नहीं है, वहाँ कोई कारणों यह बुरा :) मुझे लगता है कि यह बहुत जावास्क्रिप्ट की तरह है विचार करना चाहिए।

इसके अलावा, यदि आप विधियों/सत्यापन का पुन: उपयोग करना चाहते हैं, तो आप कर सकते हैं! बस उन्हें असाइन करें (फ़ंक्शंस का पुन: उपयोग करें) या यदि आप फ़ंक्शंस का एक समूह फिर से उपयोग करना चाहते हैं, तो उन्हें किसी ऑब्जेक्ट में जोड़ें और फिर रीडर और मॉडरेटर ऑब्जेक्ट्स का विस्तार करें। उदाहरण के लिए ...

var repeated_methods = { 
    first : function() { }, 
    second: function() {} 
}; 
//I want to reuse this for both User and Moderator but not for Reader... 
User = _.extend(User, repeated_methods); 
Moderator = _.extend(Moderator, repeated_methods); 

यह बहुत लचीला है और जो क्षैतिज पुन: उपयोग के लिए अच्छा है है-एक रिश्ते (व्यवहार) के लिए अनुमति देते हैं,।

+0

यह एक अच्छा विचार की तरह लगता है। मैं निश्चित रूप से यह कोशिश कर रहा हूँ! –

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