2015-09-04 2 views
0

Так что я звоню метод от клиента, который имеет функцию обратного вызова:Обратный вызов в клиенте для метода Метеор вызова возвращения неопределенными

Meteor.call("readHeaders", Meteor.user().emails[0].address+'/'+Session.get("file1"), 
      function(err,result){ 
       console.log(result); 
     }); 

и здесь есть метод, который называют:

readHeaders: function(fileName){ 
     var nodeFS = Meteor.npmRequire('node-fs'); 
     nodeFS.readFile("somepath/"+fileName,'utf8', function read(err, data){ 
      if (err) { 
       throw err; 
      } 
      var headers = [data.slice(0,data.indexOf('\n')).split(",")]; 

      return headers; 

     }); 
    } 

Правильный результат печатается на сервере, но на клиенте он возвращает undefined. Какие-либо предложения?

+0

Вы пробовали регистрировать ошибку в консоли на клиенте, чтобы узнать, что это такое? Возможно, вам придется использовать Meteor.bindEnvironment для обратного вызова readFile, поскольку вы выполняете асинхронный вызов в библиотеке внешних узлов. – danSiebes

+0

http://stackoverflow.com/questions/12569712/meteor-calling-an-asynchronous-function-inside-a-meteor-method-and-returning-th/21542356#21542356 –

+0

@BrianShamblen У него есть обратный вызов, это не так. Кажется, это проблема асинхронности. – ffxsam

ответ

0

Я предполагаю, что ваш метод вызова и обратный вызов хороши, но ваш метод, вероятно, не возвращает то, что вы ожидаете. Добавьте console.log(headers) до линии return headers и убедитесь, что это объект.

Смежные вопросы