2014-04-20 111 views
0

我知道Meteor方法可以讓客戶端進行服務器調用,但是從Meteor方法(即服務器到服務器調用)調用另一個函數或方法的最佳方法是什麼。MeteorJS Meteor從服務器到服務器的方法調用

現在,如果我做一個常規的JS函數調用,它只有在JS文件在lib文件夾中才有效。但我需要它在服務器文件夾中。

下面是代碼

我有一個主題收集它坐落在集合文件夾,並且具有以下

我有這是一個收集提供了以下

Meteor.methods({ 
    topicPost: function(topicAttributes) { 
     var user = Meteor.user(), 
      topicWithSameTitle = Topics.findOne({title: topicAttributes.title}); 

     // ensure the user is logged in 
     if (!user) 
      throw new Meteor.Error(401, "You need to login to add a new topic"); 

     Meteor.call('checkUser'); 
} 
}); 

然後我有以下方法位於服務器文件夾中

Meteor.methods({ 
    checkUser: function() { 
     alert('aaaa'); 
    } 
}); 
+0

這看起來不正確。請參閱http://stackoverflow.com/a/10156935/223225。你能發佈你的代碼嗎? –

+0

添加代碼 –

+0

沒關係它的作品沒有任何想法的方式,也許我昨晚做了一個語法錯誤工作 –

回答

2

工程,但它不是一個很好的解決方案。我處理這個問題的方法是讓所有我的功能外部Meteor.methods,只是在必要時中繼到正確的功能。

// Client 
Meteor.call('foo'); 

和:

// Server 
Meteor.methods({ 
    foo: function() { 
     foo(); 
    } 
}); 

foo = function() { 
    foo = bar; 
}; 

的優點是foo FN可以從服務器上的任何地方被稱爲無Meteor.call。同時,Meteor.methods只顯示客戶端絕對必需的東西。

[編輯]某些模糊到你在談論這「富」;顯然服務器知道你是指methods調用之外的人。但是如果你感到困惑,你可以隨時重命名一個或另一個。這樣做的好處是隻需要很少的重構。

+0

這實際上是一個非常好的想法,從來沒有想過要這樣做。謝謝 –

+0

這似乎工作得很好,不知道是什麼問題。 –