【问题标题】:How do I retrieve the post variables from $http.post/angular on my node backend?如何从节点后端的 $http.post/angular 检索帖子变量?
【发布时间】:2015-04-22 02:28:43
【问题描述】:

这是我的前端。

auth
var time = 5;

$http.post('/tasks/addTime', null, {
    headers: {
        Authorization: "Bearer " + auth.getToken()
    },
    data: {
        id: "Me",
        time: time,
    }
});

这是后面

router.post('/tasks/addTime', auth, function(req, res, next) {
    console.log(req);
});

我能够看到数据结构 req 被回显,所以我正确调用了后端。我如何访问我的“id”和“time”变量?

【问题讨论】:

  • 它们不在req 对象中吗?
  • 我尝试回应 req.. 有很多东西。具体来说,我尝试了 req.body 并且它是空的。想象一下这必须成功完成无数次,但这对谷歌来说是一件困难的事情。

标签: javascript angularjs node.js post parameters


【解决方案1】:

Node 以块的形式处理 POST 数据。您的函数需要接收数据块并构建完整的主体。有诸如 Express 之类的框架会为您处理此问题,但以下是如何自己执行此操作的示例:

router.post('/tasks/addTime', auth, function(req, res, next) {
  var body = "";
  req.on('data', function (chunk) {
    body += chunk;
  });
  req.on('end', function () {
    console.log('POSTed: ' + body);
  });
});

重要的是要注意,在侦听 POST 数据时,req 对象也是 Event Emitter。因此,req 将在收到 chunk 的传入数据时发出 'data' 事件;当没有更多传入数据时,将发出 'end' 事件。所以,在我们的例子中,我们监听'data' 事件。收到所有数据后,我们将数据记录到控制台。

使用 Express,您还应该有一个额外的对象,req.params

req.params

包含映射到命名路由“参数”的属性的对象。例如,如果您有路由/user/:name,则“name”属性可用作req.params.name。该对象默认为{}

您还可以在 Express 中间件的帮助下使用 req.body

req.body

包含在请求正文中提交的数据键值对。默认为undefined,当您使用body-parsermulter等正文解析中间件时填充。

【讨论】:

  • 感谢您的回复。我的朋友说这段代码给他带来了问题,所以我今晚会看看并尝试让它工作,看看他是否遗漏了什么。如果我能让我们的设置使用这种方法,我会给你正确的答案。
  • 如果你有时间,你能给我们一个快速框架的例子吗?我们使用的是快递,所以无论如何检查一下可能是谨慎的。
猜你喜欢
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多