我是NodeJS的新手,正在开发已创建注册表单的应用程序。要上传图片,我正在使用 multer 。对于表单验证,我使用的是 express-validator 。我的问题是,在进行表单验证之前,文件已上传。因此,如果用户由于某些验证错误而没有创建帐户,但是文件将被上传。问题是无论帐户是否成功创建,我都可以为每个表单提交上传文件。
我想做什么?
我只想在用户成功创建帐户后保存文件。所以,无论如何在回调中使用multer,所以当我完成表单验证后,文件就会上传。我不能在 multer 中间软件和最终回调之间使用 express-validation 中间件,因为 express-validation 会将错误传递给下一次回调。 这是我的一些代码
router.post('/registeration', multerMiddleware, validationMiddleware, finalCallback)
validationMiddleware 是一个数组。
var multer = require('multer');
var multerMiddleware= multer({dest: './profile-images', fileFilter: userRegisteration.fileFilter}).single('profileImage');
var validationMiddleware = [check(...), check(...),...]
var finalCallback = function (req, res, next) {
// code is here
}
答案 0 :(得分:1)
Express路由器按照您安装的相同顺序执行中间件 他们
router.post('/registeration', multerMiddleware, validationMiddleware, finalCallback)
因此,在您的multerMiddleware
完成验证之前,您的validationMiddleware
已执行(因此保存了文件)。
将代码更改为:
router.post('/registeration', validationMiddleware,multerMiddleware, finalCallback)
因此,multerMiddleware
仅在请求验证后保存文件