2015-04-28 50 views
-1

我有以下autoform鉤子代碼。我如何獲得method.call以外的價值?MeteorJs,無法獲得方法外的method.call返回值

我的問題是,當我運行method.call時,'chi'值是未定義的。而服務器上有'1'記錄,但是chi沒有得到'myResult'值。如果我註釋掉method.call並返回'Gogo',那麼'chi'正確地獲取這個值。有人能指導我做錯了什麼,以及如何糾正。

代碼:

before: { 
    method: function(doc) { 
     var retVal = false ; 
     var pai = Q.fcall(function(){ 
      if(!_.isEmpty(doc) && _.pick(doc, 'name')) { 
       console.log('Ist level, true condition: ', doc); 
       return true; 
      } 
      else{ 
       console.log('Ist level, false condition: ', doc); 
       return false; 
      } 
     }) 
      .then(function(check){ 
       console.log('Check value: ', check); 

       if(check){ 
       Meteor.call('CategoryNameAvailable', doc.name, function (error, result) { 

         console.log('Returned result from server', result); 
         if (!result) { 
          if(Contexts.Category.keyIsInvalid('name')){ 
           Contexts.Category.resetValidation('name'); 
          } 
          console.log('Returned result from server inside if condition ', result); 
          Collections.Category.simpleSchema().namedContext("CategoryInsertForm").addInvalidKeys([{ 
           name: "name", 
           type: "notUnique" 
          }]); 

          console.log('Doc value in meteor call function: ', doc); 
          Session.set('retVal', true); 
          console.log('retVal value in meteor call function: ', retVal); 
         } 
         return 'myResult'; 
        }); 
        // return 'Gogo'; 
        /* Meteor call End */ 
       } 

      }) 
      .then(function(chi){ 
       console.log('Chi value: ', chi); 
      }) 
      .done(); 

     console.log('Pai value-2: ', pai); 

    } /* End of method */ 
} /* End of 'before' hook */ 

回答

0

你認爲你可以,你要定義你的方法在文件中添加?最近我有一個類似的問題,試圖做類似的事情,它與我的方法定義的格式有關。

對我來說,這是錯誤的地方,我在我的方法定義中返回數據。在另一個類似問題的另一個例子中,我沒有訂閱客戶端的Collection。

如果那不是問題,和您的電話已正確返回數據,其僅通過它調用的上下文之外,你可以嘗試使用Session.set定義會話變量,然後可以每當你需要數據時都會調用它。

雖然沒有方法定義的上下文,但很難確切地說明發生了什麼。

+0

問題是'if'條件在方法從服務器返回值之前完成其執行。所以一些速度問題:)'如果'比method.call更快。 – Simpanoz