Utilizzo di Meteor, sto tentando di capire quando utilizzare Meteor.methods()
lato server mantenendo comunque gli aggiornamenti dell'interfaccia utente istantanea.Quando utilizzare Meteor.methods e utilizzare gli stub
Da Andrea Scala di introductory tutorial, egli sostiene che Meteor.methods()
dovrebbe essere usato quando si vuole aggiornare e modificare i documenti di database:
L'idea è che si definiscono tutte le funzioni sul server che fanno roba pericolosa come modificare e aggiornare i dati, quindi lasciare che il client chiami tali funzioni e ottenga valori di ritorno come le normali funzioni. Il client non vede mai l'implementazione e non modifica personalmente i dati . Il server fa tutto il lavoro.
E seguendo questo consiglio, ho implementato questo nel mio codice:
lato server:
Meteor.methods({
addMovie: function(data) {
var movie = Movies.insert({name: data});
return movie;
},
...
lato client:
Template.movies.events = ({
'click #add-movie': function(e) {
var name = document.getElementById('movie-name').value;
Meteor.call('addMovie', name);
return false;
},
...
questo funziona, ma è lento . L'interfaccia utente non si aggiorna all'istante come se fosse chiamata Movies.insert()
sul lato client. Il docs indicano che, per risolvere il problema, è possibile creare stub sul lato client:
chiamare i metodi sul client definisce le funzioni stub associati metodi di server con lo stesso nome. Non è necessario definire uno stub per il metodo se non si desidera. In questo caso, le chiamate al metodo sono solo come le chiamate di procedura remota in altri sistemi e dovrai attendere per i risultati dal server.
Ma come dovrebbero apparire questi tronchi? Dovrebbe fondamentalmente sembrare uguale al metodo lato server? Se è così, qual è il punto? Sto cercando una spiegazione più completa dell'uso e dello scopo di Meteor.methods()
, il punto/l'uso degli stub e la loro implementazione.
EDIT: David Greenspan ha contribuito a chiarire l'uso di Meteor.methods() e stub su meteor-talk.
Sei felice con la risposta di David? Se è così, basta pubblicarlo come risposta e accettarlo. –