使用Meteor,我試圖瞭解何時使用服務器端Meteor.methods()
,同時仍保留即時UI更新。何時使用Meteor.methods和利用存根
從安德魯Scala的introductory tutorial,他聲稱,如果要更新和修改數據庫文件Meteor.methods()
應使用:
的想法是,你定義所有的服務器上做 危險的東西的功能比如修改和更新數據,然後讓客戶端 調用這些函數並獲得像常規函數那樣的返回值。客戶端永遠不會看到該實現,也不會親自修改 數據。服務器完成所有工作。
而下面這個建議,我實現了這個在我的代碼:
服務器端:
Meteor.methods({
addMovie: function(data) {
var movie = Movies.insert({name: data});
return movie;
},
...
客戶端:
Template.movies.events = ({
'click #add-movie': function(e) {
var name = document.getElementById('movie-name').value;
Meteor.call('addMovie', name);
return false;
},
...
這工作,但它的速度慢。如果在客戶端調用Movies.insert()
,用戶界面不會立即更新。該docs表明,糾正問題,您可以在客戶端創建存根:
在客戶端上調用方法定義具有相同名稱的 服務器方法相關聯的存根功能。如果你不想要,你不必爲你的方法定義一個存根(stub) 。在這種情況下,方法調用只是 ,就像其他系統中的遠程過程調用一樣,您將不得不等待 以獲取服務器的結果。
但是這些存根應該是什麼樣子?它應該基本上看起來與服務器端方法一樣嗎?如果是這樣,那有什麼意義?我正在尋找關於Meteor.methods()
的使用和目的的更全面的解釋,存根/使用存根及其實現。
編輯: 大衛格林斯潘已經幫助澄清使用Meteor.methods()和存根meteor-talk。
你對戴維的回答滿意嗎?如果是這樣,只需將其作爲答案發布並接受。 –