Meteor.call从服务器返回未定义到客户端
Meteor.call returning undefined from server to client
我正在尝试在我的应用程序中对远程服务器进行 HTTP 调用
我有一个带有函数的包,该函数处理实际调用,然后将XML转换为JSON。
myPackage = {
baseUrl: "http://12.34.56.78:8080/api",
getBatchList: function() {
var url = this.baseUrl + "/batchList.xml";
HTTP.get(url, {auth: "user:pass"}, function(err, res) {
if (!err) {
console.log(res);
xml2js.parseStringSync(res.content, function(error, result){
if (!error) {
console.log(result); //the result is displayed
return result;
};
});
};
});
}
}
然后我在服务器上声明了一个 Meteor.method,这样我就可以从客户端调用该函数,因为 myPackage 仅在服务器上可用(它必须是,因为它对域外部进行 http 调用,我无法从客户端执行此操作)。
if (Meteor.isServer) {
Meteor.methods({
getBatchList: function() {
myPackage.getBatchList(function(error, result) {
if (!error && result) {
console.log(result); //nothing is logged to the console
return result;
};
});
}
})
}
但是,由于某种原因,结果似乎没有传递到 getBatchList
方法中,我怀疑是 我在回调的结构方式上有问题(我不知道);
最后在客户端上调用方法
if (Meteor.isClient) {
Template.hello.events({
'click input' : function () {
Meteor.call("getBatchList", function(error, result) {
if (result && !error) {
console.log(result);
} else {
console.log("nothing returned!!!");
};
});
}
});
}
这也不会从服务器获得任何结果,没有错误或结果。
任何帮助将不胜感激。
谢谢。
问题是服务器上运行的代码是异步的,包括HTTP请求和函数本身。 我更改了代码如下
主要是不是返回 HTTP 调用的结果,而是我们现在返回调用本身。
if (Meteor.isServer) {
Meteor.methods({
getList: function() {
var req = myPackage.getList();
return req;
}
})
};
和 myPackage getList 函数
myPackage = {
baseUrl: "http://12.34.56.78:8080/",
getList: function() {
var url = this.baseUrl + "/getList.xml";
var req = HTTP.get(url, {auth: "user:pass"});
if (req.statusCode === 200) {
xml2js.parseStringSync(req.content, function(error, result){
if (!error) {
req = result;
};
});
};
return req;
}
}
相关文章:
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 'io未定义'在客户端上.在HTML中包含socket.io脚本标记
- JS文件未在客户端浏览器上更新
- Meteor 方法返回未定义到客户端(异步)
- 自定义验证程序客户端验证函数未触发
- SignalR 客户端中心代理未定义
- 在 MQTT 客户端中“未捕获的引用错误:未定义消息传递”
- 未捕获的引用错误: 字符串未定义客户端模板.js?rev=J%2BGzwlHEWSv11%2BqD9XeOaw%3D%3
- ASP.NET 2.0自定义客户端验证在Internet Explorer中不起作用
- 字节图像未从客户端浏览器保存在数据库中
- 如何在Meteor包中包含JavaScript,使其's未在客户端中转换
- MVC3和自定义客户端验证消息
- 服务器端事件(SSE)未到达客户端
- “connect"事件未触发客户端套接字
- 带有DateTime属性的服务器端投影未在客户端上反序列化
- 套接字.io自定义客户端ID
- 如何设置SignalR自定义客户端id
- 流星集合未在客户端更新订阅
- 如何在asp.net中添加动态自定义客户端验证器
- Meteor.js:在方法调用中未在客户端捕获到错误