Javascript Meteor:在控制台(服务器)上可见,向客户端发送未定义的
最后潜入流星。关于http get请求,我有一个小问题 在客户机上执行一个简单的调用以从服务器获取数据Javascript Meteor:在控制台(服务器)上可见,向客户端发送未定义的,javascript,meteor,Javascript,Meteor,最后潜入流星。关于http get请求,我有一个小问题 在客户机上执行一个简单的调用以从服务器获取数据 if (Meteor.isClient) { Template.liveprice.helpers({ price: function() { Meteor.call('getPrice', function(error, response) { if (error) { return error;
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;
}
});
}
})
}
@埃帕斯卡雷罗是对的。幸运的是,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.');
}
}
});
我不知道meteor,但对我来说,它看起来像是一个异步调用,你不能从异步调用返回。我看到你接受了我的答案,但我做了一些更改。值得注意的是,您应该抛出一个
Meteor.Error
,而不是返回一个错误对象。最重要的是,您应该验证从远程服务器接收的数据。@sbking,thx。有机会使http请求实时吗?Atm我看不到它在更新。@user3586358为此,您可能希望在方法之外执行HTTP请求,而不是在Meteor.setInterval
中执行。然后每隔x秒用检索到的值更新数据库字段并发布它。