【发布时间】:2018-09-02 00:11:58
【问题描述】:
Multer 在 express 之上的工作方式是有线的!为什么 Multer 应该在中间件链中的控制器之前,这在设计上会导致服务器在 DB 操作被检查之前上传东西?
例如,如果对文章进行了 post 操作,并且它包含一堆字段,其中一个是文件。
articleModel{title:String,image:String};
router.post('/', multer, articleController.createArticle);
现在在请求命中时,链中的第一件事是上传请求中的文件,但是如果在将记录执行到数据库时发生错误,例如验证甚至重复,我该怎么办?只更新文章标题?旧文件会重新上传吗?
如何让multer在http操作回调的响应中上传文件?
【问题讨论】:
-
你不能在 multer 中间件之前添加一个前面的中间件来处理 DB 的东西吗?你可以有多个中间件。
-
不,因为如果稍后执行multer中间件,req.files中的文件路径将未定义,所以我不能