Как использовать Meteor.apply с опциями?

Я использую метод Meteor.call для вызова функции на сервере. Это вроде работает, однако кажется, что результат не полностью возвращается. (Ожидается длина 250, теперь возвращается 11, 121, что-то в этом роде) Я использую асинхронный Meteor.call. Я предполагаю, что до завершения функции на стороне сервера Meteor.call возвращает результат. Я пробовал синхронизировать вызов, но я не совсем понимаю документы Meteor.

Поэтому я пытаюсь использовать Meteor.apply() с параметрами. Как я могу использовать Meteor.apply с опциями? Есть примеры?

клиент.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);
    });
  }
});

person zevsuld    schedule 14.11.2014    source источник
comment
Как выглядит метод?   -  person user3374348    schedule 14.11.2014
comment
Какую ошибку выдает и как выглядит метод?   -  person Marco de Jongh    schedule 14.11.2014


Ответы (2)


Только что понял это сам. Вам нужно передать аргументы в виде массива, а чтобы указать «ждать», вы просто передаете true в функцию. Итак, в вашем случае:

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

person robut    schedule 18.01.2015
comment
true, который у вас есть, относится к полю options.noRetry, а не к ожиданию. См. Meteor.apply(name, args, [options], (Boolean), [asyncCallback]) - person user3795309; 11.05.2016

Чтобы не получить ошибку Malformed method invocation, следует передавать аргументы в виде массива. И в дополнение к ответу @robut:
по-прежнему лучше видеть, какие параметры вы передаете, поэтому я предпочитаю:

Meteor.apply('addPost',[] ,{wait:true})
person avalanche1    schedule 26.07.2015