如何使用Angular 2正确发送和接收Express API响应

如何使用Angular 2正确发送和接收Express API响应,angular,http,express,heroku,Angular,Http,Express,Heroku,下面是我如何从Angular 2应用程序发出的Express API调用接收响应。在我的组件中: this.emailService.sendEmail(this.name, this.email, this.message) .subscribe( (res) => { console.log("Success");

下面是我如何从Angular 2应用程序发出的Express API调用接收响应。在我的组件中:

this.emailService.sendEmail(this.name, this.email, this.message)
                     .subscribe(
                       (res) => {
                         console.log("Success");
                         this.success = true;
                       },
                       (err) => {
                         console.log("Failure");
                         this.success = false;
                       }
                     );
在我的电子邮件服务sendEmail()函数中:

return this.http.post('/api/sendemail', data)
                    .map(res => res.json());
通过我的Express API,我发送电子邮件,并通过节点模块发送类似的响应:

router.post('/sendemail/', (req, res) => {
...
server.send({
    text: "Sent from " + req.body.name + " message: " + req.body.message + " reply to: " + req.body.email,
    from: "email@gmail.com",
    to:   "email@gmail.com",
    subject: "test"
  }, function(err, message) {
    if (err) {
      console.log(err);
      res.status(500).send("Email failed to send.");
    } else if (message) {
      console.log(message);
      res.status(200).send("Email sent successfully.");
    }
  });
});

每次都会成功发送电子邮件,并返回200状态码(我在我的控制台和Heroku控制台中看到响应),但控制台会记录“失败”。我是否正确地将响应发送回我的应用程序?

试试这样的方法

res.status(200).json({
        message: 'Email sent successfully.'
    });
更改:

res.status(200).send("Email sent successfully.");
致:


您可以尝试
res.sendStatus(200)
而不是
res.status(500).send(“电子邮件发送失败”)?您的用法似乎不受欢迎:我以前尝试过这样做,但也有同样的问题。
res.status(200).send({message: "Email sent successfully."});
res.status(200).json({message: "Email sent successfully."});
res.status(200);