我有一封用户验证邮件。电子邮件正文包含我的角度2路由localhost:4200/verify/{userId}
。当用户点击链接时,它将转到我的angular 2路径,然后我将拆分URL以获取userId并将其传递给我的服务。
请查看我的verify.component.ts
ngOnInit() {
var str = this._router.url;
var userId = str.split('/');
this._verifyService.verifyUser(userId[2])
.subscribe((user) => console.log(user),
(err) => console.log(err));
}
这是传递值的服务。
export class VerifyService{
constructor(private _http: Http){}
verifyUser(userId){
var headers = new Headers();
console.log(userId);
headers.append('Content-Type', 'application/json');
return this._http.post('http://localhost:3000/user/verify', userId, {headers: headers})
.map((response: Response) => {
return response.json();
})
.catch(this._handlerError)
}
_handlerError(err: any){
console.log(err);
// throw err;
return Observable.throw(err);
}
}
然后这是处理要验证的用户更新的后端。
userRouter.route('/verify')
.post(function (req, res) {
console.log(req.body);
var userId = req.body.userId;
console.log(userId);
users.findOneAndUpdate({ _id: userId }, { $set: { verified: true } }, { new: true })
.exec(function (err, user) {
res.json(user);
});
});
当请求来自 Postman 时,它可以正常运行。它会更新用户记录并将其更改为已验证,但当我使用angular2时,它会返回错误请求 400 。为什么?谁能解释一下?
注意:我还有其他类似的请求,而且有效。唯一的区别是来自电子邮件的方法,我点击链接。我不知道这些信息是否有帮助,但值得一提。
答案 0 :(得分:0)
我通过将字符串URL转换为对象来解决我的问题。我认为标题的问题是appplication/json
它传递的值是一个字符串。现在我将值作为对象传递,它就可以了!