Meteor:在控制台(服务器)上可见,未定义发送到客户端

Meteor: visible on console (server), sends undefined to client

本文关键字:未定义 客户端 控制台 服务器 Meteor      更新时间:2023-09-26

终于潜入流星了。我有一个关于http get请求的小问题。

在客户端上执行一个简单的调用以从服务器获取数据。

if (Meteor.isClient) {
Template.liveprice.helpers({
    price: function() {
        Meteor.call('getPrice', function(error, response) {
            if (error) {
                return error;
            } else {
                return response;
            }
        })
    }
})
}

在服务器上,数据是从实时和公共 API 检索的。它在服务器上工作正常,但未定义的结果被发送回客户端。我在这里错过了什么?

if (Meteor.isServer) {
Meteor.methods({
    getPrice: function() {
        var url = 'https://www.bitstamp.net/api/ticker/';
        var req = HTTP.call('GET',url,function(error, result) {
            //console.log(result);
            if (result.statusCode == 200) {
                var last = result.data.last;
                console.log(last);//this shows the desired result in the server's console
                return last;//sends back undefined to the client
            } else {
                return error;
            }
        });
    }
})
}

@epascarello是对的。幸运的是,由于纤维,Meteor的HTTP也可以同步工作。试试这个:

Meteor.methods({
    getPrice: function() {
        var url = 'https://www.bitstamp.net/api/ticker/';
        var result;
        try {
          result = HTTP.get(url);
          check(result.data.last, String);
          return result.data.last;
        } catch (error) {
          throw new Meteor.Error('get-price-failed', 'Could not retrieve the price.');
        }
    }
});