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