2013-07-07 5 views
13

MeteorJS में एक स्टब विधि क्या है?मेटीरजेएस में स्टब विधि क्या है?

डेटाबेस कॉल सहित क्यों इसे गैर-स्टब बनाते हैं? धन्यवाद!

+0

क्या आपको पता है एक "स्टब" एक सामान्य सॉफ्टवेयर विकास भावना में है? – Alexander

उत्तर

28

मुझे लगता है कि आप docs में निर्दिष्ट हैं? स्टब्स Meteor.methods के माध्यम से परिभाषित हैं।

उल्का में ये स्टब्स आपको विलंबता मुआवजे की अनुमति देते हैं। इसका अर्थ यह है कि जब आप Meteor.call के साथ इन स्टब्स में से किसी एक को कॉल करते हैं तो सर्वर को स्टब के रिटर्न वैल्यू के साथ जवाब देने में कुछ समय लग सकता है। जब आप क्लाइंट पर स्टब को परिभाषित करते हैं तो यह आपको क्लाइंट पक्ष पर कुछ करने की अनुमति देता है जो आपको विलंबता मुआवजा अनुकरण करने देता है।

यानी मैं

var MyCollection = new Meteor.collection("mycoll") 
if(Meteor.isClient) { 
    Meteor.methods({ 
     test:function() { 
      console.log(this.isSimulation) //Will be true 
      MyCollection.insert({test:true}); 
     } 
    }); 
} 

if(Meteor.isServer) { 
    Meteor.methods({ 
     test:function() { 
      MyCollection.insert({test:true}); 
     } 
    }); 
} 

तो दस्तावेजों दोनों क्लाइंट और सर्वर पर डाला जाएगा हो सकता है। क्लाइंट पर एक 'तत्काल' परिलक्षित होगा, भले ही सर्वर ने जवाब नहीं दिया है कि यह डाला गया है या नहीं।

क्लाइंट साइड स्टब के बिना ऐसा होने की अनुमति देता है जिसमें दो दस्तावेज़ डाले जाते हैं, भले ही सम्मिलन दो बार चलाया जाता है।

यदि सम्मिलन विफल हो जाता है, तो सर्वर पक्ष एक जीतता है, और सर्वर क्लाइंट पक्ष का जवाब देने के बाद स्वचालित रूप से हटा दिया जाएगा।

7

ऊपर कोड आप इस है कि दोनों सर्वर और ग्राहक पर दौड़ा दिया जाएगा लिख ​​सकते हैं के लिए, जो पक्ष आप कर रहे हैं पर पहचान करने के लिए isSimulation उपयोग करें यदि आप विशिष्ट कार्य करने की जरूरत है:

var MyCollection = new Meteor.collection("mycoll") 
Meteor.methods({ 
    test:function() { 
     console.log(this.isSimulation) //Will be true on client and false on server 
     var colItem = {test:true, server: true}; 
     if (this.isSimulation) { 
      colItem.server = false; 
     } 
     MyCollection.insert(colItem); 
    } 
}); 
संबंधित मुद्दे