Я пытаюсь добавить multer в простую форму регистрации (используя passport-local-mongoose
для обработки стратегии), чтобы пользователь мог загрузить изображение профиля.
Ожидается, что форма будет отправлена нормально с multer,вместо этого, кажется, что res.redirect никогда не выполняется, и я застрял в форме регистрации (без сбоев, страница просто сидит там). Похоже, что никаких ошибок также не происходит.
это соответствующий код:
router.post('/signup', upload.single('img'), (req, res) => {
var userInstance = req.body,
{ error } = JoiSchema.UserSchema.validate(userInstance);
if (error) {
console.log(error)
if (error.details[0].message === '"repeat_password" must be [ref:password]') {
req.flash('error', "Passwords don't match.");
} else {
req.flash('error', error.details[0].message);
}
} else {
User.register(new User({ username: userInstance.username, email: userInstance.email, isAdmin: userInstance.username.includes('__ADMIN'), isBanned: userInstance.username.includes('__BANNED'), img: req.file.filename }), userInstance.password, (err, value) => {
console.log(value, 'VALUE');
if (err) {
console.log(err, 'ERROR');
}
// passport.authenticate('local')(req, res, () => {
// req.flash('success', 'Signed up!');
// return res.redirect('/campgrounds');
// });
console.log('redirecting...');
req.flash('success', 'Signed up!');
return res.redirect('/campgrounds');
});
}
});
Затем, при нажатии кнопки отправки, это именно то, что регистрирует Морган:
GET /auth/signup 200 21.961 ms - 3995
POST /auth/signup - - ms - -
GET /auth/signup 304 5.429 ms - -
{ comments: [],
createdCamps: [],
isAdmin: false,
isBanned: false,
_id: some id,
username: 'some username',
email: 'some email',
img: 'image.jpg',
salt:
'something',
hash:
'something',
__v: 0 } 'VALUE'
redirecting...
... В этот момент страница застряла. Пользователь создан просто отлично, но перенаправления не происходит. если я обновлю страницу или уйду куда-нибудь, я смогу увидеть вспышку там. По какой-то причине также при обновлении код состояния равен 200. Морган регистрирует его как: GET /auth/signup 200 10.264 ms - 4066
например.
Я попытался удалить блок проверки подлинности, чтобы войти в систему пользователя после регистрации (как вы можетесм.), избавляясь от анализатора тела, а также настраивая multer таким образом:
var uploadVehicle = new customMulter.UploadFileToPath('/images', 'img');
router.post('/signup', (req, res) => {
console.log('FIRST THIS');
uploadVehicle.uploadFile(req, res, function (err) {
if (err) {
console.log(err);
return res.json(err);
} else {
console.log('File Name ---' + req.body.csvFile);
console.log(req.file, 'FILE')
// .. then rest of the code from above
}
});
});
... все имели одинаковый результат. Форма multer и signup отлично работает в индивидуальном порядке.