Foros del Web » Programando para Internet » Node.js »

Hola mundo con MongoDB!

Estas en el tema de Hola mundo con MongoDB! en el foro de Node.js en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/01/2017, 18:00
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 510
Antigüedad: 4 años, 1 mes
Puntos: 19
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!
__________________
¿Muy rudo como para leer al Profesor Berkeley? Vamos a ver: Sobre los pelados de barrio
  #2 (permalink)  
Antiguo 11/03/2017, 08:07
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.543
Antigüedad: 7 años, 6 meses
Puntos: 182
Respuesta: Hola mundo con MongoDB!

Saludo

A ver, yo tengo una duda, cómo se enlazan app.js y routes/users.js

Es decir, según veo en tu código, en users.js ya no está la definición
del schema así que imagino esta haciendo uso del schema de app.js, correcto?

Si no es así, entonces hay que agregarlo.

Ahora, hay otros archivos involucrados además de los dos del post inicial?
Vistas, etc?

Y hay algo que no has mencionado, los datos se guardan correctamente?
(En teoría debería por el mensaje que devuelve)
Es decir, el problema es lo de los headers?

Por último, cuál versión de node y mongo estas usando?

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."



La zona horaria es GMT -6. Ahora son las 06:04.