Node.js http POST未到达后端
我试图将电子邮件值传递到后端,但它从未到达端点。我有相同的url路径被调用,但是Node.js http POST未到达后端,node.js,angular,Node.js,Angular,我试图将电子邮件值传递到后端,但它从未到达端点。我有相同的url路径被调用,但是console.log(“您已经到达后端”)从不输出。为什么呢?它肯定击中了angular服务,因为它输出到控制台没有问题 角度服务 import { Injectable } from "@angular/core"; import { HttpClient, HttpParams } from "@angular/common/http"; import { Router } from "@angular/rou
console.log(“您已经到达后端”)代码>从不输出。为什么呢?它肯定击中了angular服务,因为它输出到控制台没有问题
角度服务
import { Injectable } from "@angular/core";
import { HttpClient, HttpParams } from "@angular/common/http";
import { Router } from "@angular/router";
import { PasswordReset } from "./password.model";
@Injectable({ providedIn: "root" })
export class PasswordResetService {
constructor(private http: HttpClient, private router: Router) {}
sendEmail(email: string) {
const password: PasswordReset = {
email: email
};
console.log("Made It");
return this.http.post(
`http://localhost:3000/api/users/passwordreset`,
password
);
}
}
app.js
app.post("/api/users/passwordreset", function(req, res) {
console.log("You've made it to the backend");
let emailValue = req.body.email;
if (req.body.email !== undefined) {
User.findOne({ email: req.body.email })
.then(user => {
if(user){
console.log("fetchedUser");
console.log(user._id);
var payload = {
id: user._id,
email: user.email
};
var secret = user.password + "-" + user.passwordCreated;
console.log("THE SECRET IS: " + secret);
var token = jwt.sign(payload, secret);
console.log("payload");
console.log(payload);
var ses_mail = "From: 'Auction Site' <" + emailValue+ ">\n";
ses_mail = ses_mail + "To: " +emailValue + "\n";
ses_mail = ses_mail + "Subject: Password Reset Request\n";
ses_mail = ses_mail + "MIME-Version: 1.0\n";
ses_mail = ses_mail + "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n";
ses_mail = ses_mail + "--NextPart\n";
ses_mail = ses_mail + "Content-Type: text/html; charset=us-ascii\n\n";
ses_mail = ses_mail + '<a href="http://localhost:3000/resetpassword/' + payload.id + '/' + token + '">Click here to reset password</a>';
// /:id/:token
var params = {
RawMessage: { Data: new Buffer.from(ses_mail) },
Destinations: [emailValue ],
Source: "'AWS Tutorial Series' <" + emailValue + ">'"
};
ses.sendRawEmail(params, function(err, data) {
if(err) {
res.send(err);
console.log(err);
}
else {
res.send(data);
}
})
}
if (!user) {
return res.status(401).json({
message: "Auth failed"
});
}
});
} else {
res.send("Email address is missing.");
}
});
app.post(“/api/users/passwordreset”,函数(req,res){
log(“您已经到达后端”);
让emailValue=req.body.email;
如果(req.body.email!==未定义){
User.findOne({email:req.body.email})
。然后(用户=>{
如果(用户){
console.log(“fetchedUser”);
console.log(用户id);
var有效载荷={
id:user.\u id,
电子邮件:user.email
};
var secret=user.password+“-”+user.passwordCreated;
console.log(“秘密是:“+SECRET”);
var-token=jwt.sign(有效负载,秘密);
控制台日志(“有效载荷”);
控制台日志(有效载荷);
var ses_mail=“From:‘拍卖网站’\n”;
ses_mail=ses_mail+“收件人:”+emailValue+“\n”;
ses_mail=ses_mail+“主题:密码重置请求\n”;
ses_mail=ses_mail+“MIME版本:1.0\n”;
ses\U mail=ses\U mail+“内容类型:多部分/混合;边界=\“下一部分\”\n\n”;
ses_mail=ses_mail+“--NextPart\n”;
ses_mail=ses_mail+“内容类型:text/html;字符集=us ascii\n\n”;
ses_mail=ses_mail+“”;
///:id/:令牌
变量参数={
RawMessage:{Data:new Buffer.from(ses_-mail)},
目的地:[emailValue],
资料来源:“AWS教程系列”
};
ses.sendRawEmail(参数、函数(错误、数据){
如果(错误){
res.send(err);
控制台日志(err);
}
否则{
res.send(数据);
}
})
}
如果(!用户){
返回res.status(401).json({
消息:“身份验证失败”
});
}
});
}否则{
res.send(“电子邮件地址丢失”);
}
});
我猜您没有订阅http请求
请尝试此测试:
this.http.post(
`http://localhost:3000/api/users/passwordreset`,
password
).subscribe(r=>console.log(r));
return null;
控制台上的任何错误。我认为您应该在控制台中得到一个CORS错误。OP可能已经订阅了他们调用服务方法的位置,这是肯定的。控制台正在输出。我会在几分钟内接受你的回答,等它允许我的时候。谢谢