【发布时间】:2015-08-15 13:16:12
【问题描述】:
我一直在努力解决这个问题已经有一天了。甚至在这里发布了关于特定软件包的两个问题(iron-router,Restivus),但我没有成功。
我的情况是这样的:我有一个 Meteor JS 应用程序,它必须接收 http POST 调用才能在它的 MongoDB 数据库中插入一条记录,但是我无法通过 MeteorJS 和世界其他地方之间的连接。
我已经尝试过 Iron-router、Restivus 和几个小时前的 Picker。我在 Meteorpedia 上关注了 REST API 示例,但没有占上风。
使用 Restivus,我得到以下代码:
if(Meteor.isServer){
//Must exist, but all options can be empty
Restivus.configure({
});
//Allow Restivus to manage Reports
Restivus.addCollection('reports', {
routeOptions: {},
});
console.log("Inside 'isServer'");
Restivus.addRoute('reports/:message', {
// POST
post: {
action: function(){
console.log("Got to post!");
var response = null;
var message = this.urlParams.message;
if(message){
console.log("Message received: " + message);
return {status: "success", data: message};
} else {
console.log("Message empty...");
return {status: "fail", message: "Post not found"};
}
//Response to caller
return;
}
}
});
}
有了 Picker,我得到了这个:
if(Meteor.isServer){
Picker.route('/newReport/:message'), function(params, req, res, rext){
if(req.method == "POST")
console.log("Got a POST");
else
console.log("Not a POST");
res.end("Returned");
}
}
在两次尝试中,我在进行 GET 调用时都得到了相同的结果。我总是得到似乎是带有完整<head> 但空<body> 标记的空模板的HTML 代码。当我尝试对 webapp 中的任何路径使用 GET 和 POST 方法时,我得到了相同的结果。
由于两种情况下的错误相同,我假设我在路由的某一点犯了我的错误,所以这里遵循server/router.js 的其余部分:
Router.configure({
layoutTemplate: 'layout',
notFoundTemplate: 'notFound',
waitOn: function(){
return [Meteor.subscribe('reports')]
}
});
//Page of the report
Router.route('/report/:message', {
name: 'reportPage',
data: function(){
return Reports.findOne(this.params.message);
}
})
Router.route('/', {
name: 'reportList'
});
<<REST code goes here>>
我怀疑路由器在某一时刻发送了一个空白页,但我在路由器信息中看不到任何暗示这一点的内容。
我什至尝试使用 if/else 语句将客户端中的所有内容与服务器中的所有内容分开,但没有任何区别。作为继续测试,我会尽量保持更新。
提前谢谢你!
注意:我使用 curl(我制作的一个小型 Ruby 脚本)和 REST 控制台尝试了 GET 和 POST 方法。结果在所有 3 个实例中都是相同的。
【问题讨论】:
-
我看过,但没试过。老实说,我对它的工作原理有点困惑,找不到它的工作示例。
-
我在这里留下了一条评论,解释了您的 Restivus 实施有什么问题:stackoverflow.com/questions/30581774/…。很抱歉,您在 Meteor 中设置 REST API 时遇到了很多困难。你最终使用了什么?
标签: node.js mongodb rest http meteor