2016-11-02 42 views
0

我遇到了創建我的第一個RESTapi應用程序的問題。文件不是必需的選項使用MULTER(MEAN堆棧)

我有一個多功能模塊,用於獲取使用表單上傳的文件,並且一切都很好,直到我提供文件。

如果沒有提供該文件,那麼我的應用程序崩潰,因此如果有人會在我的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); 
}); }); 

所以,問題是:

是否有可能離開「文件」字段爲空,仍然過程中節省數據簡單DB沒有名域?先謝謝你!

+0

你可以上傳你的架構代碼....... –

回答

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); 
    }); 
}); 
+0

是的,我已經做了完全一樣,你說。儘管如此簡單。我想當我問這個問題時,我的問題是缺乏睡眠:D但是,無論如何,謝謝你我的答案是正確的 – JavaEvgen