Hola, mis amigos, voy al grano:
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 originalvar 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 originalvar 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!