Objetivo: hacer un hola mundo con MongoDB, que consiste en guardar un email y password en una BD llamada mi_bd.
Problema: Tengo un formulario con dos input text para el email y usuario, y cuando hago submit el navegador devuelve "Los datos fueron guardados correctamente", pero la consola devuelve un error: los headers ya fueron enviados.
Lo que estoy haciendo:
Cuando creo un nuevo proyecto Node.js, éste viene por defecto con esta estructura:
mi-proyecto
bin
node_modules
public
routes (index.js, users.js)
views
app.js
npm-debug.log
package.json
En app.js añado esto:
Código Javascript:
Ver original
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var mi_esquema = new Schema({ email: {type: String}, password: {type: String} }); var User = mongoose.model("User",mi_esquema); mongoose.connect('mongodb://localhost/mi_bd', (err, res) => { if (err) { throw err; console.log("ERROR! Imposible establecer conexión a la DB"); } else { console.log("Conexión OK a la DB"); } });
En routes/users.js añado esto:
Código Javascript:
Ver original
var mongoose = require('mongoose'); var User = mongoose.model("User"); router.post('/', function(req, res, next) { var user = new User({ email: req.body.email, password: req.body.password }); user.save(function(){ res.send("Los datos fueron guardados en la BD"); }); });
Sospecho que el error de que las cabeceras ya se enviaron, es causado por la línea var mongoose = require('mongoose'); que puse en routes/users.js. Pero si la quito, la consola me dice que mongoose no está definido, que es el mongoose de var User = mongoose.model("User"). Y si quito esta última línea, la consola me dice que User no está definido (que es el User declarado en la ruta).
¿Alguna idea de cómo solucionar esto?
NOTAS
- Ya instalé MongoDB y Mongoose.,
- Me he basado en este tutorial. En este tutorial el árbol de carpetas es distinto al mío, así que en el tutorial la ruta va en app.js, y no en users.js como en mi caso.
Saludos!