如何使用Meteor的WebApp访问HTTP POST主体(表单数据)?还是其他什么?

时间:2015-09-21 22:26:35

标签: javascript node.js meteor iron-router

我已经尝试使用Iron Router进行服务器路由,但这不起作用。然后我发现了WebApp,它似乎应该处理这个问题。

但是当我检查req对象时:

WebApp.connectHandlers.use("/api/add", function( req, res, next ) {
    console.log( req );
    res.writeHead(200);
    res.end("Hello world from: " + Meteor.release);
});

我没有看到任何POST表单数据。没有身体财产,我在任何其他财产的任何地方都看不到数据。

如何访问此数据?我试图找出一些我认为相对简单的事情,我疯了......

2 个答案:

答案 0 :(得分:6)

是的,我遇到了同样的问题。使用connect时,帖子正文不会自动出现在请求对象中。您可以使用像https://stackoverflow.com/a/24122700/5203563这样的中间件,或者像这样自己获取:

WebApp.connectHandlers.use("/api/add", function( req, res, next ) {

  var body = "";
  req.on('data', Meteor.bindEnvironment(function (data) {
    body += data;
  }));

  req.on('end', Meteor.bindEnvironment(function () {
    console.log(body);
    res.writeHead(200);
    res.end("Hello world from: " + Meteor.release);
  }));
});

答案 1 :(得分:0)

您需要使用光纤才能使示例正常工作,或者我通常使用选择器,您可以在meteor add meteorhacks:picker https://atmospherejs.com/meteorhacks/picker

之上添加webApp它的包装器

并且您的示例应该以这种方式工作:

Picker.route('/api/add', function(params, req, res, next) {
    console.log( req );
    res.writeHead(200);
    res.end("Hello world from: " + Meteor.release);
});

这是一篇很棒的文章,向您展示了不同的选项(webApp还有光纤)http://meteorpedia.com/read/REST_API