File is not required 选项使用 multer (MEAN stack)

File is not required option using multer (MEAN stack)

我 运行 在创建我的第一个 RESTapi 应用程序时遇到问题。

我有一个 multer 模块,用于使用表单上传文件,在我提供文件之前一切正常。

如果没有提供文件,那么我的应用程序会崩溃,所以如果有人在我的 API 中触发 post 路由来创建新实体(例如使用 curl),应用程序就会崩溃.

使用multer上传时,似乎总是需要文件。

我的 router.post 看起来像这样:

router.post('/movies', upload.single('image'), function(req, res, next) {
var movie = new Movie(req.body);
movie.fileName = req.file.filename;
movie.save(function(err, movie){
    if(err) return next(err);
    res.json(movie);
}); });

所以问题是:

是否可以将 "file" 字段留空,并且在没有 fileName 字段的情况下仍然处理将数据保存到数据库的过程?提前致谢!

并不是说 multer 需要一个文件——你只需要防止 req.file 未定义。您在引用 req.file.filename 时没有检查 req.file 是否存在。只需检查它是否存在,如果存在,则设置电影的文件名:

router.post('/movies', upload.single('image'), function(req, res, next) {
  var movie = new Movie(req.body);
  if(req.file) movie.fileName = req.file.filename;
  movie.save(function(err, movie){
      if(err) return next(err);
      res.json(movie);
  });
});