从Angular + NodeJS中的响应获取“ProgressEvent”而不是json

时间:2017-10-13 04:44:20

标签: javascript node.js angular

这是我的message.service中的get函数

message.service.ts

addMessage(message: Message) {
    const body = JSON.stringify(message);
    const headers = new Headers({ 'Content-Type': 'application/json' });
    return this.http.post('http://localhost:3000/messages', body, { headers: headers })
      .map((response: Response) => {
        const result = response.json();
        const message = new Message(result.obj.title, result.obj.content, 'Dummy', result.obj._id, null);
        this.messages.push(message);
        return message;
      })
      .catch((error: Response) => Observable.throw(error.json()));
  }

这是在我的后端。如果用户未登录。它将返回错误(未经授权)。

路由/ messages.js

router.use('/', (req, res, next) => {
  jwt.verify(req.query.token, 'secret', (err, decoded) => {
    if (err) {
      return res.status(401).json({
        title: 'Not Authenticated',
        error: err
      });
    }
    next();
  });
});

有些帖子说它与CORS有关。 但是我的后端也有这个。

app.js

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
  next();
});
app.use('/messages', messageRoutes);
app.use('/users', userRoutes);
app.use('/api', appRoutes);

这是我的组成部分。

消息input.component.ts

this.messageService.addMessage(message)
          .subscribe(
          data => this.snackBar.open('Your message is added!', 'Success!', {duration: 3000, extraClasses: ['success-snackbar']}),
          error => console.error(error)
          );

由于授权而出现错误。错误不是我从后端返回的错误。相反,这就是“进步事件”

ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}

我想知道如何以json格式显示我的后端错误。应该显示给我的控制台日志的错误。

0 个答案:

没有答案