【问题标题】:File is not required option using multer (MEAN stack)使用 multer(MEAN 堆栈)不需要文件选项
【发布时间】:2016-11-02 21:36:54
【问题描述】:

我在创建我的第一个 RESTapi 应用时遇到了问题。

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

如果没有提供该文件,那么我的应用程序就会崩溃,因此如果有人在我的 API 中触发发布路由来创建新实体(例如使用 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);
}); });

所以问题是:

是否可以将“文件”字段留空,并且仍然可以在没有文件名字段的情况下将数据保存到数据库?提前谢谢!

【问题讨论】:

  • 你能上传你的架构代码吗......

标签: node.js mongodb express mean-stack multer


【解决方案1】:

不是 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);
  });
});

【讨论】:

  • 是的,我已经完全按照你说的做了。不过这很简单。我想当我问这个问题时,我的问题是睡眠不足 :D 但无论如何谢谢你,我会把你的答案标记为正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2017-11-12
  • 2015-11-16
  • 2017-11-22
  • 1970-01-01
  • 2015-10-31
相关资源
最近更新 更多