2013-07-07 18 views

risposta

28

Penso che intendiate quelli indicati nello docs? Gli stub sono quelli definiti tramite Meteor.methods.

In Meteor questi tronconi consentono di ottenere una compensazione di latenza. Ciò significa che quando si chiama uno di questi stub con Meteor.call potrebbe volerci del tempo perché il server risponda con il valore di ritorno dello stub. Quando si definisce uno stub sul client, è possibile fare qualcosa sul lato client che consente di simulare la compensazione della latenza.

cioè posso avere

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}); 
     } 
    }); 
} 

Quindi verrà inserito documenti sia sul client che sul server. Quello sul client si rifletterà 'istantaneamente' anche se il server non ha risposto se è stato inserito o meno.

Lo stub lato client consente che ciò avvenga senza con due documenti inseriti anche se l'inserimento viene eseguito due volte.

Se l'inserimento fallisce, il lato server uno vince, e dopo che il server risponde il lato client uno verrà rimosso automaticamente.

7

Per il codice di cui sopra è possibile scrivere questo che sarà riceve sia server che client, utilizzare isSimulation per identificare sul lato Quale sei, se avete bisogno di fare compito specifico:

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); 
    } 
}); 
Problemi correlati