2017-06-14 24 views
0

ここで、私はAngular 2アプリケーションから作成しているExpress API呼び出しからの応答を受信して​​います。私エクスプレスAPIから角度2のExpress API応答を正しく送受信する方法

return this.http.post('/api/sendemail', data) 
        .map(res => res.json()); 

、私は電子メールを送信してemailjsノードモジュールとそのような応答を送信しています:

私の電子メールサービスのsendEmail()関数で
this.emailService.sendEmail(this.name, this.email, this.message) 
        .subscribe(
         (res) => { 
         console.log("Success"); 
         this.success = true; 
         }, 
         (err) => { 
         console.log("Failure"); 
         this.success = false; 
         } 
        ); 

:私のコンポーネントで

router.post('/sendemail/', (req, res) => { 
... 
server.send({ 
    text: "Sent from " + req.body.name + " message: " + req.body.message + " reply to: " + req.body.email, 
    from: "[email protected]", 
    to: "[email protected]", 
    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コンソールで応答が表示されます)が、コンソールには「失敗」が記録されますガードレス。回答をアプリケーションに適切に送り返していますか?

+0

'res.status(500).send(" Email failed to send。 ")の代わりに' res.sendStatus(200) 'を試すことができますか?あなたの使い方は廃止されているようです:https://expressjs.com/en/4x/api.html#res.sendStatus – echonax

+0

私は以前これをやってみましたが、同じ問題がありました。 – Wadoo9

答えて

0

このようなことを試してください。

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

変更:

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

へ:

res.status(200).send({message: "Email sent successfully."}); 

または

res.status(200).json({message: "Email sent successfully."}); 

または

res.status(200); 
関連する問題