res.redirect не работает внутри метода passport-local-mongoose после включения multer - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь добавить 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 отлично работает в индивидуальном порядке.

...