2013-07-07 12 views

Odpowiedz

28

Myślę, że masz na myśli te, o których mowa w docs? Rejestry są zdefiniowane przez Meteor.methods.

W Meteorach te kody pośrednie pozwalają uzyskać kompensację opóźnienia. Oznacza to, że po wywołaniu jednego z tych kodów z numerem Meteor.call może upłynąć trochę czasu, zanim serwer odpowie na zwracaną wartość kodu pośredniczącego. Po zdefiniowaniu kodu pośredniczącego na kliencie można zrobić coś po stronie klienta, co pozwala symulować kompensację opóźnienia.

tzn mogę mieć

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

Więc dokumenty zostaną wstawione zarówno po stronie klienta i serwera. Ta na kliencie zostanie odzwierciedlona "natychmiastowo", nawet jeśli serwer nie odpowiedział, czy został wstawiony, czy nie.

Kod pośredniczący strony klienta umożliwia to zdarzenie bez z dwoma dokumentami wstawionymi, mimo że insert jest uruchamiany dwa razy.

Jeśli wstawianie nie powiedzie się, po stronie serwera wygrywa, a po odpowiedzi serwera strona klienta zostanie automatycznie usunięta.

7

Dla powyższego kodu można napisać ten, który będzie prowadził zarówno serwera i klienta, należy isSimulation zidentyfikować na Wich stronie jesteś, jeśli trzeba wykonać określone zadanie:

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