Node.js 我怎样才能得到;“res.fields”;不要再回来了,因为;“未定义”;在我的申请中?

Node.js 我怎样才能得到;“res.fields”;不要再回来了,因为;“未定义”;在我的申请中?,node.js,express,multer,Node.js,Express,Multer,我正在使用multer上传多个文件的项目中工作。为此,我在控制器文件中使用upload.fields,代码如下所示: tourController.js const multerStorage = multer.memoryStorage(); const multerFilter = (req, file, cb) => { if (file.mimetype.startsWith('image')) { cb(null, true); } else { cb(

我正在使用multer上传多个文件的项目中工作。为此,我在控制器文件中使用upload.fields,代码如下所示:

tourController.js

const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  if (file.mimetype.startsWith('image')) {
    cb(null, true);
  } else {
    cb(new AppError('Not an image! Please upload images only.', 400), false);
  }
};

const upload = multer({
  storage: multerStorage,
  fileFilter: multerFilter
});

exports.uploadTourImages = upload.fields([
  { name: 'imageCover', maxCount: 1 },
  { name: 'images', maxCount: 3 }
]);
router
  .route('/:id')
  .get(tourController.getTour)
  .patch(
    authController.protect,
    authController.restrictTo('admin', 'lead-guide', 'guide'),
    tourController.uploadTourImages,
    tourController.resizeTourImages,
    tourController.updateTour
  )
在下一个函数中,我调整了图像的大小,输入了console.log res.files,但在终端输出中它返回为未定义。下面是我保存console.log res.files的代码。它遵循我在上面直接发布的代码:

exports.resizeTourImages = (req, res, next) => {
  console.log(res.files);
  next();
};
我尝试使用upload.array,但也无法按预期工作。我不确定问题是否与应用程序的不同部分有关。以下是函数在路由文件的中间件堆栈中出现的位置:

tourRoutes.js

const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  if (file.mimetype.startsWith('image')) {
    cb(null, true);
  } else {
    cb(new AppError('Not an image! Please upload images only.', 400), false);
  }
};

const upload = multer({
  storage: multerStorage,
  fileFilter: multerFilter
});

exports.uploadTourImages = upload.fields([
  { name: 'imageCover', maxCount: 1 },
  { name: 'images', maxCount: 3 }
]);
router
  .route('/:id')
  .get(tourController.getTour)
  .patch(
    authController.protect,
    authController.restrictTo('admin', 'lead-guide', 'guide'),
    tourController.uploadTourImages,
    tourController.resizeTourImages,
    tourController.updateTour
  )
我不明白为什么我不能得到这份工作。如果有帮助,我已将所有代码上载到GitHub:

如中所述,
res.files
未定义,因为multer在
req
-对象下填充
文件。您需要将其更改为:

exports.resizeTourImages = (req, res, next) => {
  console.log(req.files);
  next();
};

我现在觉得自己很愚蠢。谢谢你的帮助,非常感谢!