Express JS / MongoDB - PullRequest
       2

Express JS / MongoDB

0 голосов
/ 09 июля 2020

У меня есть код, который отвечает за регистрацию формы сообщения на странице. Каждый раз, когда он проходит проверку, и, судя по всему (проверено с помощью console.logs), он переходит к коду, который должен сохранить нового пользователя. Однако мое приложение постоянно обновляется и не останавливается. Код в основном скопирован и вставлен из учебника Брэда Траверси, поэтому нет причин, по которым он не должен работать. Я подумал, что, возможно, я не подключен к mongoDB, но оператор console.log, который проходит, говорит об обратном.

users. js (обработчик почтовых запросов)

router.post('/register', (req, res) => {
    const {
        name,
        email,
        password,
        password2
    } = req.body;
    let errors = [];

    if (!name || !email || !password || !password2) {
        errors.push({
            msg: 'Please enter all fields'
        });
    }

    if (password != password2) {
        errors.push({
            msg: 'Passwords do not match'
        });
    }

    if (password.length < 6) {
        errors.push({
            msg: 'Password must be at least 6 characters'
        });
    }

    if (errors.length > 0) {
        res.render('register', {
            errors,
            name,
            email,
            password,
            password2
        });
    } else {
        User.findOne({
            email: email
        }).then(user => {
            if (user) {
                errors.push({
                    msg: 'Email already exists'
                });
                res.render('register', {
                    errors,
                    name,
                    email,
                    password,
                    password2
                });
            } else {
                const newUser = new User({
                    name,
                    email,
                    password
                });

                bcrypt.genSalt(10, (err, salt) => {
                    bcrypt.hash(newUser.password, salt, (err, hash) => {
                        if (err) throw err;
                        newUser.password = hash;
                        newUser
                            .save()
                            .then(user => {
                                req.flash(
                                    'success_msg',
                                    'You are now registered and can log in'
                                );
                                res.redirect('/users/login');
                            })
                            .catch(err => console.log(err));
                    });
                });
            }
        });
    }
});

app. js (удалил ключ URI по очевидным причинам. Mon goose должен подключаться, когда выполняется инструкция console.log, но иногда медленно)

const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');

const app = express();
const port = process.env.PORT || 8000;


// db config
const db = require('./config/keys').mongoURI;

// connect to mongo
mongoose.connect('', {
    useNewUrlParser: true,
    useUnifiedTopology: true
}, () => console.log('MongoDB Connected...'));


// ejs
app.use(expressLayouts);
app.set('view engine', 'ejs');


// body parser
app.use(express.urlencoded({
    extended: false
}))


// routes
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));

app.listen(port, console.log(`Listening on port ${port}`));

user. js (моя схема модели пользователя)

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    fullName: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

const User = mongoose.model('User', userSchema);

module.exports = User;

РЕДАКТИРОВАТЬ: я не получаю этот код ошибки в моем терминале, но он исчезает, если я обновляю sh сервер

events.js:287
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::8000
    at Server.setupListenHandle [as _listen2] (net.js:1313:16)
    at listenInCluster (net.js:1361:12)
    at Server.listen (net.js:1449:7)
    at Function.listen (C:\Users\robolowski\Desktop\portfolio\ExpressLoginApp\node_modules\express\lib\application.js:618:24)
    at Object.<anonymous> (C:\Users\robolowski\Desktop\portfolio\ExpressLoginApp\app.js:33:5)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1340:8)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 8000
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...