我使用Meteor.call
方法在服务器上调用函数。它有点工作,但似乎结果没有完全恢复。 (预计长度为250,现在它返回11,121,类似的东西)
我正在使用异步Meteor.call
。我猜测在服务器端功能完成之前,Meteor.call
正在返回结果。我尝试过同步通话,但我并不清楚Meteor文档。
所以我尝试使用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);
});
}
});
答案 0 :(得分:4)
我自己想出来了。您需要将参数作为数组传递,并指定“等待”,您只需将true
传递给函数。所以,在你的情况下:
Meteor.apply('chartData', [prodName], true, function(err, result){
答案 1 :(得分:0)
为了不接收Malformed method invocation
错误,您应该将参数作为数组传递。
除了@ robut的回答:
它仍然是最好看到你通过的选项,因此我更喜欢:
Meteor.apply('addPost',[] ,{wait:true})