2011-04-22 18 views
5

मेरे पास एक रेल/मोंगोइड ऐप है जो उच्चतर का उपयोग कर डेटा क्लाइंट-साइड प्रदर्शित करता है। अभी, डेटा को जावास्क्रिप्ट में पास करने के लिए, मैं टेम्पलेट फ़ाइल में एक मोंगोइड क्वेरी और रेल 'as_json/to_json का उपयोग करता हूं। यह मेरे लिए बहुत अक्षम लगता है क्योंकि जेसन डेटा को रूबी संरचनाओं में पार्स किया जाना चाहिए, और उसके बाद जेएसओएन में फिर से परिवर्तित किया जाना चाहिए। यह ठीक है जब डेटा की एक छोटी राशि होती है, लेकिन मेरे मामले में, बहुत कुछ हो सकता है।रेल में कच्चे mongodb क्वेरी

तो मेरा सवाल यह है कि, मैं कच्चे मोंगोडब क्वेरी कैसे कर सकता हूं, और रुबी जेएसओएन क्रमबद्धता/deserialization के बिना सीधे रेलवे प्रतिक्रिया बफर को आउटपुट लिख सकते हैं?

+0

क्या आप कुछ उदाहरण प्रदान कर सकते हैं? –

उत्तर

3

मोंगो डीबी में डेटा बीएसओएन में संग्रहीत है, जो जेएसओएन नहीं है। रूबी ड्राइवर read_documents विधि में deserialization (बीएसओएन :: BSON_CODER.deserialize) करता है। यदि आप अपने स्वयं के बीएसओएन-टू-जेएसओएन को रोल करना चाहते हैं, तो आपको बीएसओएन :: बीएसओएनकोडर.deserialize के कार्यान्वयन की आवश्यकता होगी, और शायद, मोंगो-रूबी ड्राइवर में अधिक भागों को फिर से लिखना होगा। अगर, हालांकि, यह एक भूमि के ऊपर स्वीकार्य है, वह है, तो आप सिर्फ ActionController :: धातु उपवर्ग और कुछ इस तरह करेंगे:

class ChartController < ActionController::Metal 
    def chart 
    res = fetch_data_from_mongodb 
    self.content_type = 'application/json' 
    self.response_body = res.to_json 
    end 
end 

एक अन्य विकल्प MongoDB के REST HTTP इंटरफ़ेस है, जो JSON प्रदान करता है का उपयोग करते हुए हो सकता है। लेकिन आपको अपने आवेदन में कुछ पहुंच नियंत्रण रखना होगा, और मूल रूप से, प्रॉक्सी अनुरोध।

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