返回属性的服务器方法不能正常工作Meteor JavaScript

时间:2015-04-24 04:29:17

标签: javascript meteor client server

我正在尝试调用服务器方法来返回是否存在隐藏属性。该属性在终端控制台中正确返回,但在客户端未正确返回(返回undefined)。我想要返回的属性是tireMarkup

这是我的方法调用:

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参数的方式有关。

1 个答案:

答案 0 :(得分: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)
         }
        }