2012-03-28 20 views
6

मुझे काफी समस्या है जबकि मैं mongodb में एक एम्बेडेड दस्तावेज़ को अपडेट करने का प्रयास कर रहा हूं। मैंने दो तरीकों की कोशिश की है और न ही काम किया है, और मैंने हर जगह खोज की है कि यह क्यों अपडेट नहीं हो रहा है। वैसे भी, मेरी स्कीमा इस तरह दिखती है (मुझे लगता है कि एम्बेडेड दस्तावेज़ जिसे मैं अपडेट करने का प्रयास कर रहा हूं वह एक मिश्रित प्रकार है)।मोंगोस एम्बेडेड दस्तावेज़ को अपडेट नहीं कर रहा है

var UserModel = new mongoose.Schema({ 
    account: String, 
    salt: String, 
    password: String, 
    highlight_words: String, 
    networks: {}, 
    ip: String, 
    ident: String, 
    is_connected: Boolean, 
    account_type: String 
}); 

मैंने कोड के इन दो स्निपेट के साथ 'नेटवर्क' को अपडेट करने का प्रयास किया है और न ही काम करता हूं। मैं अपने बालों को खींचने वाला हूं।

self.userModel.update({account: key}, {networks: self.client_data[key]['networks']}, function(err) {}); 

और (ध्यान दें कि मैं को बचाने के लिए() एक कॉलबैक जोड़ने की कोशिश की है, और यह त्रुटि के बिना निष्पादित करता है)

self.userModel.findOne({account: key}, function(err, doc) { 
    doc.networks = self.client_data[key]['networks']; 
    doc.markModified('networks').save(); 
}); 

किसी भी मदद की सराहना की होगी! धन्यवाद!

संपादित करें:

समस्या यह है कि वस्तु इतनी {'some.thing': {more: 'stuff'}} की तरह था स्पष्ट रूप से इसे पसंद नहीं किया था। जो समझ में आता है!

+0

'self.client_data [कुंजी] [ 'नेटवर्क']' का मूल्य क्या है? अपने डिबगिंग में मदद के लिए इसे कुछ अक्षर के साथ बदलने का प्रयास करें। – paulmelnikow

+0

यह काफी बड़ी वस्तु है, मुझे पता है कि यह एक तथ्य के लिए है हालांकि यह आबादी है। मैंने इसे 'doc.networks = {test: 123}' के साथ बदलने की कोशिश की; और अभी भी दस्तावेज़ को सहेज नहीं लिया .. – rickibalboa

+0

पहले संस्करण में भी, मैं अनुमान लगा रहा हूं? किसी भी मौके से यह कुछ भी मेल नहीं खा रहा है? क्या हटाएं ({खाता: कुंजी}) 'काम? – paulmelnikow

उत्तर

11

doc.markModified('networks'); आज़माएं। ऐसा लगता है कि networks एक स्कीमालेस प्रकार है। Mongoose schemaless प्रकारों में परिवर्तन autodetect नहीं कर सकते हैं।

+0

आपने अपना जीवन बचाया – Unitech

+0

आप मेरे नायक हैं! –

+0

Awsome आदमी यह मेरे लिए काम किया :) –

2

आपको काम करने के लिए पूरी तरह से अपनी स्कीमा को परिभाषित करने की आवश्यकता है। उदाहरण के लिए:

नेटवर्क { प्रकार: "स्ट्रिंग" }

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