Meteor Async ValidatedMethod вызывается с неопределенными параметрами функции

someMethod = new ValidatedMethod({
    name: 'someMethodName',
    validate: new SimpleSchema({
        subId: {type: String, min:1},
        planId: {type: String}        
    }).validator(),
    async run(params){
        try{
                     //params is undefined
        } 

    }
});

С помощью async run(params) причины params быть undefined (кажется, что контекст переключается на Global контекст). Удаление async работает нормально (за исключением того, что я больше не могу использовать await в теле метода). Почему это так, и как я все еще могу использовать ожидание внутри ValidatedMethod?

Примечание 1: я вызываю метод из клиента примерно так - и получаю тот же результат, если пытаюсь использовать обычный Meteor.methods({}) определение. Я вызываю метод используя Meteor.apply от клиента

ClientHelpers.callWithPromise = function(methodName, methodArgs){
  //methodArgs must be an array
  return new Promise(function(resolve, reject){
    Meteor.apply(methodName, methodArgs, {wait:true}, function(error, result){
      if (error){
        reject(error);
      } 
      console.log(result);
      resolve(result);
    });
  });
}

Потом звоню на клиента (уверена paramsObject верно):

var myResult = await ClientHelpers.callWithPromise('someMethodName', [paramsObject]);

Примечание 2: я также проследил его до внутренних частей Meteor.apply, куда он фактически отправляет paramsObject через DDP, в сеансе отладки:

  // Sends the DDP stringification of the given message object
  _send(obj) {
    this._stream.send(DDPCommon.stringifyDDP(obj));
  }

Большое спасибо за понимание.

0 ответов

Другие вопросы по тегам