【发布时间】:2018-01-20 00:28:15
【问题描述】:
我已经使用 meteorjs 构建了一个应用程序。我需要来自第三方的一些数据。他们会通过 HTTP.POST 方法向我发送数据。
我需要在我的应用程序上监听以查找 http.post 请求。如果我遇到这样的请求,我需要发送一个确认,说明请求已收到,然后我需要提取发送的数据。
我正在使用以下代码,但输出与预期不符。
使用picker包,
var postData = {
"channelName" : "Number Theory1",
"startDate" : "2017-07-22T06:29:35.681Z",
"endDate" : "2017-08-22T06:29:35.681Z"
}
HTTP.call('POST', 'http://localhost:3000', {
data: postData
}, (error, result) => {
if (error) {
console.log('we are getting this error:' + error);
} else {
console.log('POstres : ' + result);
}
});
function extractProcessData(data){
console.log('function called! : ' + data);
}
function confirmDataReceived(data) {
HTTP.get('http://localhost:3000', function(err, res){
// confirmation error
if(err){
console.log('error ' + err);
}
// confirmation success and process data
else{
console.log('data : ' + data + res)
extractProcessData(data) //call function to process data
}
});
}
var postRoutes = Picker.filter(Meteor.bindEnvironment(function(req, res) {
if (req.method == "POST"){
console.log('req : ' + req.method + " " + req.body)
confirmDataReceived(req.body);
}
return true;
// return req.method == "POST";
}));;;
任何帮助将不胜感激!
干杯!
【问题讨论】:
-
你为什么要做 Session.set('flag'... 而不是调用一个函数并将你的 if(Session.get.. 包装成一个函数。你需要知道 if(会话...测试目前仅在服务器启动时运行一次。进一步调用修改会话不会再次执行此语句。
-
好的。所以我需要把 if(session.get()) 部分变成一个函数。然后在调用 session.set 的地方调用该函数,对吗?我的另一个疑问是我不需要 httplistener 来检测 http.post 请求吗?
-
我提供了我认为必要步骤的答案。您不需要 httplistener,它是您的 Picker 路由器。你也可以运行你自己的监听器,但是如果你已经有了路由(比如 Picker)那就没有必要了,因为所有的请求都通过 Picker 运行
标签: web-services meteor service http-get httplistener