繁体   English   中英

获取响应时发生错误,如果nodejs服务器在某些延迟后发送响应

[英]error in getting the response, if nodejs server send response after some delay

我正在尝试上传图像,然后nodeJS服务器将该图像文件夹的路径发送回作为响应。

但是当我在执行某些任务后发送响应时,在角度侧没有任何反应。

这是我的component.ts文件。

uploadImage() {
    const formData = new FormData();
    formData.append('photo', this.image);
    const obj$ = this.userService.uploadData(formData); 
    obj$.subscribe(data => {
      console.log(data);   //// nothing happening.
      if (data.success) {
        this.uploadForm.patchValue({
          document: data.url
        });
      }
    });
  }

和我的service.ts

uploadData (uploadImage) {
   return this.http.post<UploadPhoto>('/user/upload', uploadImage);
  }

和我的app.js

router.post('/upload' ,upload.single('photo'), (req,res) => {

  console.log(req.file);
  const body = req.file;

  cloudinary.uploader.upload(body.path, (err, result) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log(result);
    res.status(200).json({
      url: result.url,
      success: true
    });
  });
});

但是当我发送响应而不执行任何任务时,它的工作原理就像

router.post('/upload' ,upload.single('photo'), (req,res) => {

  console.log(req.file);
  const body = req.file;

  res.status(200).json({
       url: 'hello',
       success: true
  })

});

我不知道为什么会这样。

请有人帮我。

当您的上传器中发生错误时,您会将错误返回到控制台,然后结束执行。 如果异步方法中有错误,则必须将其传递给next()函数,以便express可以处理它。

router.post('/upload' ,upload.single('photo'), (req,res, next) => {

  console.log(req.file);
  const body = req.file;

  cloudinary.uploader.upload(body.path, (err, result) => {
    if (err) {
      console.log(err);
      next(err);
    }
    else {
      console.log(result);
      res.status(200).json({ url: result.url, success: true });
    }
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM