2015-04-24 72 views
1

我想調用服務器方法來返回是否存在隱藏屬性。該屬性在終端控制檯中正確返回,但在客戶端無法正確返回(返回未定義)。我想要返回的屬性是tireMarkup服務器方法返回屬性無法正常工作流星JavaScript

這裏是我的方法調用:

var currentUserId = this._id; 

    Meteor.call('checkMarkup', currentUserId, function(tireMarkupExists) { 
     console.log(tireMarkupExists) //returns undefined 
     if(!tireMarkupExists) { 
      alert('Please enter a tire markup greater than 1 for the customer'); 
      alert(tireMarkupExists) //returns undefined 
     } 

這裏是我的服務器的方法:

Meteor.methods({ 
    'checkMarkup': function(currentUserId, tireMarkupExists) { 
     console.log('user? ' + currentUserId); //returns the correct user 
     a = Meteor.users.findOne(currentUserId); 
     console.log(a.tireMarkup); //returns the integer value correctly 
     if (a.tireMarkup & a.tireMarkup > 1) { 
      return (tireMarkupExists); 
     } 
     } 
    }); 

有什麼想法?我認爲這個問題與我通過currentUserIdtireMarkupExists論點的方式有關。

回答

2

爲什麼不在結果上返回true/false值,就像這樣。

將您的服務器方法更改爲此。

Meteor.methods({ 
    'checkMarkup': function(currentUserId) { 
     console.log('user? ' + currentUserId); //returns the correct user 
     a = Meteor.users.findOne(currentUserId); 
     console.log(a.tireMarkup); //returns the integer value correctly 
     if (a.tireMarkup & a.tireMarkup > 1) { 
      return true; 
     }else{ 
      return false; 
     } 
     } 
    }); 

並使用這樣的Meteor.call

Meteor.call('checkMarkup', currentUserId, function(error,result) { 
     if(!error){ 
      if(result === true){ 
      console.log("tireMarkupExists"); 
      }else{ 
      cosnole.log("tireMarkupExists dont exist") 
      } 
     }else{ 
      console.log("Opss an error : " error.reason) 
     } 
     }