Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/01/2017, 19:00
Avatar de berkeleyPunk
berkeleyPunk
 
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 9 meses
Puntos: 22
Pregunta Hola mundo con MongoDB!

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 original
  1. var mongoose = require('mongoose');
  2. var Schema = mongoose.Schema;
  3. var mi_esquema = new Schema({
  4.   email: {type: String},
  5.   password: {type: String}
  6. });
  7. var User = mongoose.model("User",mi_esquema);
  8. mongoose.connect('mongodb://localhost/mi_bd', (err, res) => {
  9.   if (err) {
  10.     throw err;
  11.     console.log("ERROR! Imposible establecer conexión a la DB");
  12.   }
  13.   else {
  14.     console.log("Conexión OK a la DB");
  15.   }
  16. });

En routes/users.js añado esto:
Código Javascript:
Ver original
  1. var mongoose = require('mongoose');
  2. var User = mongoose.model("User");
  3.  
  4. router.post('/', function(req, res, next) {
  5.   var user = new User({ email: req.body.email, password: req.body.password });
  6.   user.save(function(){
  7.     res.send("Los datos fueron guardados en la BD");
  8.   });
  9. });

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
  1. Ya instalé MongoDB y Mongoose.,
  2. 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!