Mit Meteor versuche ich zu verstehen, wenn serverseitige Meteor.methods()
zu verwenden, während Instant-UI-Updates weiterhin beibehalten.Wann Meteor.Methods zu verwenden und Stubs zu verwenden
Von Andrew Scala introductory tutorial, behauptet er, dass Meteor.methods()
verwendet werden sollten, wenn Sie aktualisieren möchten, und Ihre Datenbankdokumente zu ändern:
Die Idee ist, dass Sie alle Funktionen auf dem Server definieren, die gefährliche Dinge zu tun wie Daten ändern und aktualisieren, und lassen Sie dann den Client rufen diese Funktionen und erhalten Rückgabewerte wie normale Funktionen. Der Client sieht die Implementierung nie und ändert die Daten nicht persönlich. Der Server erledigt die ganze Arbeit.
Und im Anschluss an diese Beratung, ich implementiert dies in meinem Code:
Server-Seite:
Meteor.methods({
addMovie: function(data) {
var movie = Movies.insert({name: data});
return movie;
},
...
Client-side:
Template.movies.events = ({
'click #add-movie': function(e) {
var name = document.getElementById('movie-name').value;
Meteor.call('addMovie', name);
return false;
},
...
Dies funktioniert, aber es ist langsam . Die Benutzeroberfläche wird nicht sofort aktualisiert, als wenn Sie auf der Clientseite Movies.insert()
aufgerufen hätten. Die docs zeigen, dass das Problem zu beheben, Sie Stubs auf der Client-Seite erstellen:
Aufrufe von Methoden auf dem Client definiert Stub-Funktionen im Zusammenhang mit Server Methoden mit dem gleichen Namen. Sie müssen keinen Stub für Ihre Methode definieren, wenn Sie nicht möchten. In diesem Fall sind Methodenaufrufe nur wie Remoteprozeduraufrufe in anderen Systemen, und Sie müssen auf die Ergebnisse vom Server warten.
Aber wie sollen diese Stubs aussehen? Sollte es im Prinzip genauso aussehen wie die serverseitige Methode? Wenn ja, worauf kommt es an? Ich bin auf der Suche nach einer umfassenderen Erklärung der Verwendung und des Zwecks von Meteor.methods()
, dem Punkt/der Verwendung von Stubs und deren Implementierung.
EDIT: David Greenspan hat geholfen, die Verwendung von Meteor.methods() und Stubs auf meteor-talk zu klären.
Sind Sie mit Davids Antwort zufrieden? Wenn ja, poste es einfach als Antwort und akzeptiere es. –