Problem with a NodeJS and MongoDB connection with Mongoose

1

I am trying to create a connection between mongodb and nodejs, my code is as follows:

const express = require('express');
const bodyParser = require('body-parser');
const pug = require('pug');
var app = express();
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//Conexion a MongoDB
mongoose.connect('mongodb://localhost/project');
//Creacion de la Base de Datos en un JSON
var usuarios = {
    email: String, 
    password: String
};

//Model 
var user_schema = new Schema(usuarios)
var User = mongoose.model('User', user_schema);


//vistas y configuracion
app.set('view engine', 'pug');
app.use(express.static('public'));

//peticiones HTTP
app.get('/', (req,res) => {
    res.render('index');
    console.log('Hiciste una peticion GET')
});

app.post('/', (req,res) => {

var datos = new User({
    email: req.body.email,
    password: req.body.password
});

datos.save(function (err, datos) {

            res.render('bienvenida')
});


//Puerto en el que se va a escuchar el servidor
app.listen(80, 'localhost', () => {
    console.log('Servidor iniciado correctamente');
});

Of course I'm trying with express and mongoose, so the error that comes to me is this:

  

TypeError: Can not read property 'email' of undefined       at app.post (C: \ Users \ gacar \ Desktop \ server \ server.js: 34: 22)       at Layer.handle [as handle_request] (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ layer.js: 95: 5)       at next (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ route.js: 137: 13)       at Route.dispatch (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ route.js: 112: 3)       at Layer.handle [as handle_request] (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ layer.js: 95: 5)       at C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 281: 22       at Function.process_params (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 335: 12)       at next (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 275: 10)       at serveStatic (C: \ Users \ gacar \ Desktop \ server \ node_modules \ serve-static \ index.js: 75: 16)       at Layer.handle [as handle_request] (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ layer.js: 95: 5)       at trim_prefix (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 317: 13)       at C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 284: 7       at Function.process_params (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 335: 12)       at next (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ index.js: 275: 10)       at expressInit (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ middleware \ init.js: 40: 5)       at Layer.handle [as handle_request] (C: \ Users \ gacar \ Desktop \ server \ node_modules \ express \ lib \ router \ layer.js: 95: 5)

and this is my pug file for the view:

extends ./layouts.pug
block contenido
    body
        div(class="container")
            form(action='/', method="POST", class="form-signin")
                .container
                    form.form-signin
                    h2.form-signin-heading Please sign in
                    label.sr-only(for='inputEmail') Email address
                    input#inputEmail.form-control(type='email', placeholder='Email address', name="email" required, autofocus='')
                    label.sr-only(for='inputPassword') Password
                    input#inputPassword.form-control(type='password', placeholder='Password', required, name="password")
                    .checkbox
                    label
                    input(type='checkbox', value='remember-me')
                    |  Remember me
                    button.btn.btn-lg.btn-primary.btn-block(type='submit') Sign in
    
asked by Diesan Romero 12.06.2017 в 07:09
source

1 answer

1

I think your mistake is basically because you're not playing with the bodyparser, you need something like this:

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

I recommend that you go using es6 syntax and help with eslint.

Express / Connect top-level generic - example

    
answered by 12.06.2017 / 07:23
source