2013-03-15 7 views
5
साथ मोंगो डीबी में जे एस कार्यों भंडारण

मैं एक साधारण जे एस वर्ग है:समस्याएं Node.js

var User = function(id){ 
    this._id = id; 
    this.sayHello = function(){ 
     return "hello"; 
    } 
} 

मैं तो डिफ़ॉल्ट Node.js ड्राइवर का उपयोग कर MongoDB में संग्रहीत करने के लिए जाना:

users.insert(new User(1)); 

अंत में, मैं उपयोगकर्ता को पुनः प्राप्त है, और समारोह पर अमल करने का प्रयास करें:

users.findOne({_id:1}, function(err, item) { 
    console.log("Say hello: " + item.sayHello()); 
}); 

मैं निम्न त्रुटि, जो वास्तव में भ्रामक है प्राप्त करते हैं:

throw err; 
     ^
TypeError: Object #<Object> has no method 'sayHello' 

मैं पूरी तरह इस पर खो रहा हूँ। मेरी समझ यह थी कि मोंगोडीबी ने जेएस कार्यों और गुणों दोनों को संग्रहीत किया है। यदि यह मामला नहीं है, तो क्या आप सिफारिश कर सकते हैं कि मैं इसके आसपास कैसे काम कर सकता हूं?

धन्यवाद!

+0

आपका उदाहरण मोंगो खोल के माध्यम से मेरे लिए काम कर रहा है। कोई त्रुटि नहीं है और कहें कि हैलो() को भी सही ढंग से बुलाया जाता है। – zeusdeux

+0

@zeusdeux प्रश्न 2 प्रक्रियाओं के बारे में है: mongodb और एक अलग node.js अनुप्रयोग सर्वर प्रक्रिया। मोंगो खोल एक विकास उपयोगिता है। यह सवाल node.js. में एक अनुप्रयोग बनाने के बारे में है। –

+0

@ पीटर हां मुझे वह बिट मिला। ऑब्जेक्ट विधियों को किसी भी तरह से संग्रहीत करने से पहले क्रमबद्ध किया जाता है, इसलिए सभी संभावनाओं में नतीजे अलग-अलग नहीं होने चाहिए, चाहे वह कहां से किया जाता है, चाहे वह मोंगो क्लाइंट या नोड ऐप हो। मैं इसे सुनिश्चित करने के लिए आज एक ऐप के भीतर से कोशिश करूँगा। – zeusdeux

उत्तर

9

मोंगो फ़ंक्शंस (कोड), केवल डेटा स्टोर नहीं कर सकता है। कच्चे डेटा को वापस ले जाएं और इसे एक कन्स्ट्रक्टर फ़ंक्शन पर पास करें, या ओडीएम जैसे मोंगोस पर विचार करें।

ऐसी स्थितियों का एक बहुत ही विशिष्ट और सीमित सेट है जिसमें आप स्ट्रिंग फॉर्म में मोंगो फ़ंक्शन कोड भेज सकते हैं और इसे सर्वर पर मूल्यांकन कर सकते हैं। ये the MongoDB manual में प्रलेखित हैं। हालांकि, मोंगो के अंदर चल रहे उस कोड का उद्देश्य परिष्कृत डेटा क्वेरी ऑपरेशंस का समर्थन करना है, न कि एप्लिकेशन तर्क मॉडल के लिए, यह सवाल क्या है। एप्लिकेशन तर्क आपके node.js मॉड्यूल .js फ़ाइलों में चला जाता है। डेटा डेटाबेस में चला जाता है।

+3

मोंगोडीबी वास्तव में स्टोर कोड कर सकते हैं। – zeusdeux

+0

http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html – Joe

+1

मैं संपादन से सहमत हूं। अलग-अलग एप्लिकेशन तर्क और डेटा जो यह काम करता है। अपने ऐप के भीतर मॉड्यूल में डेटा को मोंगोडब और ऐप लॉजिक में भेजें। – zeusdeux