2014-11-14 28 views
5

我正在使用Meteor.call方法調用服務器上的函數。這是一種工作,但它似乎結果並沒有完全返回。 (期望長度250,現在它返回11,121,類似的東西) 我正在使用異步Meteor.call。我在服務器端功能完成前猜測,Meteor.call正在返回結果。我嘗試了同步呼叫,但我不清楚Meteor文檔。如何在選項中使用Meteor.apply?

所以我想用選項Meteor.apply()。我如何使用Meteor.apply選項?任何例子?

client.js

var chartData; 
Template.prodSelect.events({ 
    'click': function(e){ 
    e.preventDefault(); 
    var prodName = document.getElementById("productSelect").value; 
    //console.log(prodName); 
    Meteor.call('chartData', prodName,function(err,data){ 
     if (err) 
     console.log(err); 
     chartData = JSON.parse(data); 
     //console.log(data); 
     createChart(chartData); 
    }); 
    } 
}); 

嘗試這樣做,但給人的錯誤。

var chartData; 
Template.prodSelect.events({ 
    'click': function(e){ 
    e.preventDefault(); 
    var prodName = document.getElementById("productSelect").value; 
    //console.log(prodName); 
    Meteor.apply('chartData', prodName,{wait: true}, function(err,data){ 
     if (err) 
     console.log(err); 
     chartData = JSON.parse(data); 
     //console.log(data); 
     createChart(chartData); 
    }); 
    } 
}); 
+1

是什麼方法是什麼樣子? – user3374348

+0

它給出了什麼錯誤,該方法是什麼樣的? –

回答

4

我自己就明白了這一點。您需要將參數作爲數組傳遞,並指定「等待」,您只需將true傳遞給該函數。所以,你的情況:

Meteor.apply('chartData', [prodName], true, function(err, result){

+0

你所說的'true'是指字段options.noRetry不等待。請參閱 Meteor.apply(name,args,[options],(Boolean),[asyncCallback])' – user3795309

0

爲了不收到Malformed method invocation錯誤,你應該通過參數數組。 而且除了@ robut的回答是:
它仍然是最好看你逝去的哪些選項,因此,我更喜歡:

Meteor.apply('addPost',[] ,{wait:true}) 
相關問題