Функция Mon goose .save () зависает при отправке многочастной формы. - PullRequest
0 голосов
/ 26 апреля 2020

В настоящее время я работаю над сайтом блога на Node.js + Express + Pug + MongoDB в сочетании с другими модулями. В этом проекте я пытаюсь создать администратора и зарегистрировать его на веб-сайте (сохранить его данные в базе данных MongoDB) через форму HTML (в которой также есть изображение). Для обработки изображений я использовал «multer», который отлично работает. Когда я отправляю форму, изображение перемещается в нужный каталог, но формы никогда не отправляются, а детали никогда не сохраняются, форма просто продолжает загружаться, хотя индексы создаются в оболочке MongoDB. Я не уверен, в чем проблема. console.log (req.body) & console.log (req.file) работает отлично.

Вот файл маршрутизации (index. js)

const Admin = mongoose.model('admin');

router.get('/', function(req, res)
{
    res.render('homepage', {title: "Homepage | Insomniacs.Blog"})
});


var storage = multer.diskStorage({   
    destination: function(req, file, cb) { 
       cb(null, './public/admins');    
    }, 
    filename: function (req, file, cb) { 
       cb(null , file.originalname +'-' + Date.now()+path.extname(file.originalname));   
    }
 });

const adminUpload = multer({storage: storage, limits: {fileSize: 5000000} });

router.get('/admin/newadmin', function(req, res)
{
    res.render('adminregform', {title: 'Admin Registration'});
});

router.post('/admin/newadmin', adminUpload.single("cimage"), function(req, res){


        console.log(req.file);
        console.log(req.body);

        if(!req.file && !req.body)
        {
            var newAdmin = new Admin({
                cname: req.body.cname,
                cusername: req.body.cusername,
                cemail: req.body.cemail,
                cpassword: req.body.cpassword,
                cimage: req.file && req.file.originalname ? req.file.path : ''
            });

            newAdmin.save(function(err)
            {
                if(err)
                {
                    console.log(err);
                    res.render('adminregform');   
                }
                else
                {
                    console.log(req.body);
                    console.log(req.file);
                    res.redirect('/admin/dashboard');
                }
            });
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...