उत्सुक अगर मैं यह सही कर रहा हूं और यदि नहीं, तो आप लोग इस बात से कैसे संपर्क करेंगे।क्लाइंट साइड में Express.js स्थानीय चर का उपयोग जावास्क्रिप्ट
मेरे पास एक जेड टेम्पलेट है जिसे किसी मोंगोडीबी डेटाबेस से पुनर्प्राप्त कुछ डेटा प्रस्तुत करने की आवश्यकता है और मुझे क्लाइंट साइड जावास्क्रिप्ट फ़ाइल के अंदर उस डेटा तक पहुंच की आवश्यकता है।
मैं Express.js उपयोग कर रहा हूँ और इस प्रकार जेड टेम्पलेट को डाटा भेजने:
p Hello #{data.name}!
:
var myMongoDbObject = {name : 'stephen'};
res.render('home', { locals: { data : myMongoDbObject } });
फिर अंदर की home.jade मैं जैसे काम कर सकें जो लिखता है:
Hello stephen!
अब मैं चाहता हूं कि मैं क्या चाहता हूं o क्लाइंट साइड जेएस फ़ाइल के अंदर इस डेटा ऑब्जेक्ट तक पहुंच है, इसलिए मैं डेटाबेस को अपडेट करने के लिए सर्वर पर वापस पोस्ट करने से पहले एक बटन क्लिक करने पर ऑब्जेक्ट में हेरफेर कर सकता हूं।
मैं जेड टेम्पलेट में एक छिपे हुए इनपुट फ़ील्ड के अंदर "डेटा" ऑब्जेक्ट को सहेजकर और फिर अपने क्लाइंट-साइड जेएस फ़ाइल के अंदर उस फ़ील्ड का मान लाकर इसे पूरा करने में सक्षम हूं।
अंदर मेरे मुवक्किल की ओर जे एस फ़ाइल में
- local_data = JSON.stringify(data) // data coming in from Express.js
input(type='hidden', value=local_data)#myLocalDataObj
फिर home.jade मैं बहुत तरह local_data पहुँच सकते हैं:
अंदर myLocalFile.js
var localObj = JSON.parse($("#myLocalDataObj").val());
console.log(localObj.name);
हालांकि इस स्ट्रिंग/पार्सिंग व्यवसाय गन्दा लगता है। मुझे पता है कि मैं अपने जेड टेम्पलेट में डीओएम ऑब्जेक्ट्स में अपने डेटा ऑब्जेक्ट के मानों को जोड़ सकता हूं और फिर उन मानों को jQuery का उपयोग करके ला सकता हूं, लेकिन मैं अपने क्लाइंट साइड जेएस में एक्सप्रेस से वापस आने वाले वास्तविक ऑब्जेक्ट तक पहुंच प्राप्त करना चाहता हूं।
क्या मेरा समाधान इष्टतम है, आप लोग इसे कैसे पूरा करेंगे?
मैं वास्तव में इस सटीक समस्या को हल करने दो महीने पहले एक NPM पैकेज बनाया है: https://github.com/brooklynDev/JShare – BFree