2012-11-22 15 views
9

मेरे पास मेरे उल्का सर्वर और रिमोट mongodb उदाहरण के बीच एक धीमी कनेक्शन है। क्या मैं किसी भी तरह से क्लाइंट पक्ष पर इंतजार कर सकता हूं और सब्सक्रिप्शन पंजीकृत नहीं कर सकता जब तक कि सर्वर मोंगो से कनेक्शन स्थापित नहीं हो जाता?सर्वर पक्ष पर मॉन्गो के कनेक्शन तक तैयार होने तक क्लाइंट साइड पर कैसे प्रतीक्षा करें?

+0

आप अपने प्रश्न को संपादित करना चाहिए अगर आप एक अद्यतन है। – knownasilya

उत्तर

2

ऐसा करने का एक प्राचीन तरीका Meteor.auterId() में Meteor.autorun का उपयोग कर परिवर्तन के लिए सुन रहा है। यदि आप इसे प्राप्त करने में सक्षम हैं, तो आप जान लेंगे कि आपने MongoDB से कनेक्ट किया है। यदि आप प्रमाणीकरण से निपट नहीं रहे हैं, तो आप सर्वर पक्ष पर एक विधि बना सकते हैं जो मोंगोडीबी से कुछ देता है। जब यह कुछ देता है, ग्राहक पक्ष में सफलता पर आप सभी सब्सक्रिप्शन शुरू कर सकते हैं।

+0

हां, यह करने का सबसे उपयोगी और आसान तरीका है। –

+0

मोंगो तैयारी की जांच करने का एक बेहतर तरीका होना चाहिए, लेकिन मुझे यह अभी उल्का के लिए प्राथमिकता सूची में नहीं लगता है। – HGandhi

2

ऐसा करने का सबसे विश्वसनीय तरीका Meteor.call आमंत्रण के माध्यम से है। यदि आप इसे एक सिंक्रोनस कॉल (कॉलबैक नहीं) के रूप में करते हैं, तो ग्राहक कॉल पूरा होने तक प्रतीक्षा करेगा। यहाँ कैसे अतुल्यकालिक रूप से यह करना है:

Meteor.call('isEverythingReady', param1, 
    function(error, result) { 
     if (error === undefined) { 
     Meteor.subscribe("mystuff"); 
     Session.set("sess1", "whatever"); 
     } else { 
     alert("There was an error during startup."); 
     } 
    }); 

और फिर

if (Meteor.isServer) { 
    Meteor.methods({ 
    isEverythingReady: function(param1) { 
     // can you connect to database? 
     return true; 
    } 
    } 
} 
+0

मुझे मेटीर में मेरी एक परियोजना पर एक ही समस्या थी और जब मैंने अपने दस्तावेज़ों के माध्यम से जाना और यह पता लगाया कि यह कैसे करना है, तो यह जवाब काम करता था। हालांकि आपको शायद फ़ंक्शन कैसे बनाना है (अपने उत्तर में संपादन जोड़ना) – Charles

+0

सुनिश्चित नहीं करना चाहिए कि मैं आपकी टिप्पणी समझता हूं - कॉलबैक फ़ंक्शन उपरोक्त स्निपेट में दिखाया गया है। –

+0

वैसे हाँ, लेकिन कॉल करने के लिए फ़ंक्शन को कैसे बनाया जाए, इस पर सूचीबद्ध नहीं किया गया था, जब मैंने मूल रूप से यह कोशिश की थी तो मैंने meteor.methods() के बजाय डिफ़ॉल्ट फ़ंक्शन x() बनाने का प्रयास किया था। और टिप्पणी में सवाल के लिए, हाँ, आप इस तरह से डेटाबेस से कनेक्ट कर सकते हैं। – Charles