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));
}
Большое спасибо за понимание.