微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HttpErrorResponse 后角度停止工作

如何解决HttpErrorResponse 后角度停止工作

我正在使用 angular 8 和 NodeJS 服务器,并将 mongo 作为我的数据库。 我想问客户他是否在没有完成购物车的情况下登录,如果他想继续 或开始一个新的购物车。问题是,当将购物车状态从“活动:真”变为“活动:假”并验证 NodeJS 无法再调用此购物车时,我在服务调用后进入了角度,我得到了 HttpErrorResponse 和所有内容.subscribe() 不起作用。

nodeJs 路由

 router.get("/getCartDetails",async (req,res,next) => {
try {
    const userId = ObjectID(req.headers.user._id);
    let cart = await Cart.findOne({ userId,active: true });
    if (!cart) return res.status(404).send("no active carts were found"); // no matter what I send I get an HttpErrorResponse 404 //
    res.status(201).send(cart);
} catch (err) {
    console.log(err);
    res.status(404).send("no active carts were found");
}

});

角度组件中的代码部分

enter code here
 this.cartService.getCartDetails().subscribe(result => { // nothing works in subscribe//
        if (result) {
          this.cartID = res._id;
          this.modalService.open(this.content);
        } else {
          this.router.navigate(["/products"])
        }      
      })

购物车服务代码部分

getCartDetails(): Observable<any> {
return this.http.get(`${baseUrl}/cart/getCartDetails`)

}

解决方法

您明确发送了 404 状态。在这种情况下,HTTP observable 将发出 error 通知而不是 next 通知。目前订阅中没有错误处理。

尝试在订阅中添加error回调

this.cartService.getCartDetails().subscribe({
  next: (result: any) => {
    if (result) {
      this.cartID = res._id;
      this.modalService.open(this.content);
    } else {
      this.router.navigate(["/products"])
    }      
  },error: (error: any) => {
    console.log('Got error:',error);
    // do what you want when an error is emitted
  }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。