2015-01-27 9 views
9

मेरे पास एक ऐप है जो modeodb और mongoose के साथ node.js पर काम करता है। मेरा ऐप बस भेजता/हटाता/प्रपत्र डेटा को संपादित करता है और उस के लिए मैं ऐसे नेवला मॉडल है:गतिशील रूप से मोंगोस स्कीमा कैसे बनाएं?

var mongoose = require('mongoose'); 

module.exports = mongoose.model('appForm', { 
    User_id : {type: String}, 
    LogTime : {type: String}, 
    feeds : [ 
    { 
     Name: {type: String}, 
     Text : {type: String}, 
    } 
    ] 
}); 

और है कि बस ठीक काम करता है!

अब, मैं फॉर्म में एक फ़ंक्शन जोड़ना चाहता हूं ताकि उपयोगकर्ता इसमें एक टेक्स्ट (या फ़ील्ड) जोड़ सकें और इसमें एक टेक्स्ट दर्ज कर सकें। क्लाइंट पक्ष पर गतिशील कार्यक्षमता बनाना कोई समस्या नहीं है, लेकिन मैं समझता हूं कि मेरा mongoose.model सही ढंग से संरचित होना चाहिए। मेरा प्रश्न है: मैं उस परिवर्तनीय मानों (गतिशील रूप से निर्मित डेटा डेटा नाम और उसके पाठ) को mongoose स्कीमा में कैसे जोड़ूं?

मुझे लगता है कि का उपयोग कर 'सख्त: झूठी' और 'Schema.Types.Mixed' है की सलाह दी लेकिन मैं समझ नहीं .. मैं क्या कोशिश की है:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var feedSchema = new Schema({strict:false}); 

module.exports = mongoose.model('appForm', feedSchema); 

किसी भी सुझाव दिए गए? अग्रिम में धन्यवाद!

var appFormSchema = new Schema({ 
    User_id : {type: String}, 
    LogTime : {type: String}, 
    feeds : [new Schema({ 
     Name: {type: String}, 
     Text : {type: String} 
    }, {strict: false}) 
    ] 
}, {strict: false}); 

module.exports = mongoose.model('appForm', appFormSchema); 

आप feeds के रूप में पूरी तरह से स्कीमा-छोड़ने के लिए चाहते हैं, कि जहां Mixed इस्तेमाल किया जा सकता है::

उत्तर

16

Schema निर्माता के लिए एक दूसरा पैरामीटर के रूप में यह आपूर्ति करके अपने मौजूदा स्कीमा परिभाषा के strict: false विकल्प लागू

var appFormSchema = new Schema({ 
    User_id : {type: String}, 
    LogTime : {type: String}, 
    feeds : [Schema.Types.Mixed] 
}, {strict: false}); 

module.exports = mongoose.model('appForm', appFormSchema); 
+0

वह कोड काम करता है और डिफॉल्ट फॉर्म डेटा पोस्ट करता है: user_id, logTime और फ़ीड्स सरणी और इसकी ऑब्जेक्ट लेकिन जैसे ही मैं फीड्स सरणी में एक और प्रॉपर्टी जोड़ता हूं जैसे: customText, यह उस custo को अद्यतन नहीं करता है mText लेकिन बाकी ... मैं खोजूंगा कि मैं अभी भी कुछ गलत कर रहा हूं..धन्यवाद! – Mar

+0

यदि आप 'फ़ीड्स' में मनमानी गुण जोड़ना चाहते हैं, तो विकल्प को उस एम्बेडेड स्कीमा पर भी सेट करने की आवश्यकता है। अद्यतन उत्तर देखें। – JohnnyHK

+1

हाँ !!! :) दूसरा विकल्प बिल्कुल वही है जो मैं घंटों तक करने की कोशिश कर रहा हूं! आपका बहुत बहुत धन्यवाद! – Mar

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