No se puede acceder a mongodb a través del navegador. Parece que está intentando acceder a MongoDB a través de HTTP en el puerto del controlador nativo

Abro la terminal e ingreso los siguientes comandos.

sudo mongod 

que luego da salida

 [initandlisten] waiting for connections on port 27017 

Abro otra terminal y entro

 sudo mongo 

que abre el shell mongo y solicita comandos mongo, pero cuando voy a localhost / 27017 recibo el siguiente mensaje:

 It looks like you are trying to access MongoDB over HTTP on the native driver port. 

Creé una aplicación de nodejs simple usando Express y cuando publico datos POST , parece que el mongodb se cuelga. Este es el mensaje que recibo en el terminal en el que inicio mi aplicación Express y la página nunca publica los datos. Así que creo que el problema está en Mongo, pero no puedo resolverlo.

 POST /info 200 120002ms 

Aquí está mi código expreso

 var Info = require('../models/info'); var path = require('path'); var fs = require('fs'); var join = path.join; exports.form = function(req,res){ res.render('info', { myName: 'Michael' }); }; exports.submit = function(){ console.log('Within exports.submit 1'); return function(req,res,next){ console.log('Within exports.submit 2 '); var firstName = req.name.first; var lastName = req.name.last; Info.create({ firstName: firstName, lastName: lastName },function(err){ if(err) return next(err); res.redirect('/') }); } }; 

Modelo

 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/info'); var schema = new mongoose.Schema({ firstName: String, lastName: String }); module.exports = mongoose.model('info',schema); 

app.js

 ... app.get('/info',info.form); app.post('/info',info.submit); ... 

Antes de Mongo 3.6 :

Puedes empezar con mongodb

 mongod --httpinterface 

Y acceder a ella en

 http://localhost:28017 

Desde la versión 2.6: MongoDB desactiva la interfaz HTTP de forma predeterminada.

Actualizar

Interfaz HTTP y API REST

MongoDB 3.6 elimina la interfaz HTTP en desuso y la API REST a MongoDB.

Ver la interfaz http Mongo y api rest

MongoDB tiene un puerto administrativo basado en web simple en 28017 por defecto.

No hay acceso HTTP en el puerto predeterminado de 27017 (que es lo que el mensaje de error intenta sugerir). El puerto predeterminado se usa para el acceso del controlador nativo, no para el tráfico HTTP.

Para acceder a MongoDB, deberá usar un controlador como el controlador nativo de MongoDB para NodeJS . No se “POST” a MongoDB directamente (pero puede crear una API RESTful usando Express, que utiliza los controladores nativos). En su lugar, utilizará una biblioteca de contenedor que hace que el acceso a MongoDB sea conveniente. También puede considerar el uso de Mongoose (que usa el controlador nativo) que agrega un modelo similar a ORM para MongoDB en NodeJS.

Si no puede acceder a la interfaz web , puede estar deshabilitada. Normalmente, no esperaría que lo necesitara para realizar el desarrollo a menos que esté revisando los registros y demás.

Al igual que el comentario anterior, el mensaje “Parece que está intentando acceder a MongoDB a través de HTTP en el puerto del controlador nativo”. es una advertencia porque no entiende esta línea: mongoose.connect (‘mongodb: // localhost / info’); y navegando en esta url: http: // localhost: 28017 /

Sin embargo, si desea ver la página web de administración de mongo, puede hacerlo con este comando:

mongod –rest –httpinterface

navegando en esta url: http: // localhost: 28017 /

el parámetro httpinterface activa la página web de administración, y el rest de parámetros es necesario para activar los servicios de rest que requiere la página

Estoy en Ubuntu 14.04 y mongod está registrado como un servicio upstart. Las respuestas en este post me enviaron en la dirección correcta. La única adaptación que tenía que hacer para que las cosas funcionaran con el servicio de /etc/mongod.conf era editar /etc/mongod.conf . Busca las líneas que leen:

 # Enable the HTTP interface (Defaults to port 28017). # httpinterface = true 

Simplemente quite el # en frente de la interfaz http y reinicie el servicio mongod:

 sudo restart mongod 

Nota: También puede habilitar la interfaz de rest agregando una línea que diga rest=true justo debajo de la línea de interfaz http mencionada anteriormente.

Interfaz HTTP para MongoDB obsoleto desde la versión 3.2 🙂

Comprobar Mongo Docs: interfaz de estado HTTP