来自angular2

时间:2017-01-24 03:33:47

标签: node.js angular express

我有一封用户验证邮件。电子邮件正文包含我的角度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 。为什么?谁能解释一下?

注意:我还有其他类似的请求,而且有效。唯一的区别是来自电子邮件的方法,我点击链接。我不知道这些信息是否有帮助,但值得一提。

1 个答案:

答案 0 :(得分:0)

我通过将字符串URL转换为对象来解决我的问题。我认为标题的问题是appplication/json它传递的值是一个字符串。现在我将值作为对象传递,它就可以了!