提供调用方法结果的异常

时间:2015-03-09 14:10:16

标签: meteor nitrousio

我一直在测试使用流星的http调用,我使用了nitrous(因为我在周末没有访问我的开发笔记本电脑)并且它工作正常。 但当我试图从我的本地电脑运行它返回:

  

提供调用'getMatch'的结果时出现异常:TypeError:   无法读取未定义的属性“持续时间”。

任何可能是原因的想法? 方法定义:

Dota = {};

Dota.getMatch = function() {
    if (!Meteor.settings.steamToken)
    throw new Meteor.Error(500, 'Enter a valid Steam Token in Meteor.settings');

    var matchResponse = Meteor.http.get(
       "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?",
        {
            params:{
                "match_id": "1305454585",
                "key": Meteor.settings.steamToken
            }
        }
    );

    if (matchResponse.statusCode === 200) {
        return matchResponse.data.result
    }
    else {
        throw new Meteor.Error(500, "getMatch failed with error: "+matchResponse.statusCode);
    }
}

Meteor.methods({
    'getMatch': function(){
        return Dota.getMatch();
    }
})

调用方法:

Meteor.call('getMatch', function(error, result){
    var duration = numeral(result.duration).format('00:00:00');
    Session.set('duration', duration);

    var winner = Meteor.myFunctions.getWinner(result.radiant_win);
    Session.set('winner', winner);
});

Template.layout.helpers({
    winner: function () {
        return Session.get('winner');
    },
    duration: function () {
        return Session.get('duration');
    }
});

1 个答案:

答案 0 :(得分:1)

找到解决方案,我改变了

的位置
Meteor.methods({
    'getMatch': function(){
        return Dota.getMatch();
    }
})

到server / server.js(我在packages / dota / dota.js中有它),现在它可以工作了!感谢@ user3374348的帮助!