Регистрационная форма в Node js с использованием Express и Mongodb - PullRequest
1 голос
/ 01 мая 2020

Я новичок в node js, я слежу за серией узлов Traversy media, которой почти три года. Я создал регистрационную форму, но проблема в том, что когда я отправляю форму, страница вместо перенаправления на страницу входа в систему вызывает ошибку внешнего интерфейса ( скриншот ошибки ). Я не мог найти никакого решения для этого. Поэтому, пожалуйста, если кто-нибудь поможет мне.

Опубликованы соответствующие скриншоты.

Спасибо.

user. js (Route)

const express = require('express')
const router =  express.Router()
const bcrypt = require('bcryptjs')

//User Model
let User = require('../models/user')

// Express Validator Middleware
const { check, validationResult } = require('express-validator/check');

//Register Form
router.get('/register', (req, res)=> {
    res.render('register')
})

//Register Process
router.post('/register', [
    check('name').notEmpty().withMessage('Name is required'),
    check('email').notEmpty().withMessage('Email is required'),
    check('email').isEmail().withMessage('Email is not valid'),
    check('username').notEmpty().withMessage('Username is required'),
    check('password').isEmpty().withMessage('Password is required'),
    check('password2').matches('password').withMessage('Passwords do not match')
], (req, res)=> {
    let user = new User({
        name: req.body.name,
        email: req.body.email,
        username: req.body.username,
        password: req.body.password,
        password2: req.body.password2
    })

    //Get Errors
    const errors = validationResult(req)

    if(errors)
    {
        res.render('register', {
            errors: errors
        })
    }
    else
    {
        user.name = req.body.name;
        user.email = req.body.email;
        user.username = req.body.username;
        user.password = req.body.password;

        bcrypt.genSalt(10, (err, salt)=> {
            bcrypt.hash(user.password, salt, (err, hash)=> {
                if(err)
                {
                    return
                }
                user.password = hash
                user.save((err)=> {
                    if(err)
                    {
                        return
                    }
                    else
                    {
                        req.flash('success', 'You are now registered and can log in!')
                        res.redirect('/users/login')
                    }
                })
            })
        })
    }
})

router.get('/login', (req, res)=> {
    res.render('login')
})

module.exports = router;

* модель пользователя *

const mongoose = require('mongoose')

//User Schema
const UserSchema = mongoose.Schema({
    name:{
        type: String,
        reqiured: true
    },
    email:{
        type: String,
        reqiured: true
    },
    username:{
        type: String,
        reqiured: true
    },
    password:{
        type: String,
        reqiured: true
    }
});

const User = module.exports = mongoose.model('User', UserSchema)

* регистрационная форма *

extends layout

block content
    h1 Register
    form(action="/users/register", method="post")
        #form-group
            label Name:
            input.form-control(name="name" type="text")
        #form-group
            label Email:
            input.form-control(name="email" type="text")
        #form-group
            label Username:
            input.form-control(name="username" type="text")
        #form-group
            label Password:
            input.form-control(name="password" type="password")
        #form-group
            label Confirm:
            input.form-control(name="password2" type="password")
        br
        input.btn.btn-primary(type='submit', value='Submit')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...