web-dev-qa-db-fra.com

Impossible d'accéder à mongodb via un navigateur - Il semble que vous tentiez d'accéder à MongoDB via HTTP sur le port du pilote natif.

J'ouvre le terminal et saisis les commandes suivantes

Sudo mongod

qui sort ensuite

[initandlisten] waiting for connections on port 27017

J'ouvre un autre terminal et entre

Sudo mongo

qui ouvre le shell mongo et demande des commandes mongo, mais lorsque je vais sur localhost/27017, je reçois le message suivant:

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

J'ai créé une application nodejs simple en utilisant express et lorsque je POST données, il me semble que mongodb se bloque. C'est le message que je reçois dans le terminal dans lequel je lance mon application express et la page ne poste jamais les données. Donc, je crois que le problème réside dans Mongo mais je ne peux pas le comprendre. 

POST /info 200 120002ms

Voici mon code express

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('/')
        });
    }
};

Modèle

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);
...
19
Michael

Avant Mongo 3.6:

Vous pouvez commencer mongodb avec 

mongod --httpinterface

Et y accéder sur

http://localhost:28017

Depuis la version 2.6: MongoDB désactive l'interface HTTP par défaut.

Mettre à jour

Interface HTTP et API REST

MongoDB 3.6 supprime l'interface HTTP obsolète et l'API REST vers MongoDB.

Voir Interface http Mongo et reste api

61
David

MongoDB a un port administratif basé sur le Web simple à 28017 par défaut.

Il n'y a pas d'accès HTTP sur le port par défaut 27017 (c'est ce que le message d'erreur tente de suggérer). Le port par défaut est utilisé pour l'accès au pilote natif, pas pour le trafic HTTP.

Pour accéder à MongoDB, vous devez utiliser un pilote tel que le pilote natif MongoDB pour NodeJS . Vous ne "posterez" pas directement à MongoDB (mais vous pouvez créer une API RESTful en utilisant express qui utilise les pilotes natifs). À la place, vous utiliserez une bibliothèque wrapper qui facilite l'accès à MongoDB. Vous pouvez également envisager d'utiliser Mongoose (qui utilise le pilote natif) qui ajoute un modèle ORM-like pour MongoDB dans NodeJS.

Si vous ne parvenez pas à accéder à l'interface web , celle-ci est peut-être désactivée. Normalement, je ne m'attendrais pas à ce que vous en ayez besoin pour faire du développement, à moins de vérifier les journaux, etc.

9
WiredPrairie

Comme dans le commentaire précédent, le message "Il semblerait que vous tentiez d'accéder à MongoDB via HTTP sur le port du pilote natif." c'est un avertissement parce que vous ne comprenez pas cette ligne: mongoose.connect ('mongodb: // localhost/info'); et en parcourant cette URL: http: // localhost: 28017/

Cependant, si vous voulez voir la page Web de l'administrateur du mongo, vous pouvez le faire avec cette commande:

mongod --rest --httpinterface

parcourant cette URL: http: // localhost: 28017/

le paramètre httpinterface active la page Web d'administration et le paramètre reste nécessaire pour activer les services de repos requis par la page

6
nekperu15739

Je suis dans Ubuntu 14.04 et mongod est enregistré en tant que service de départ. Les réponses dans ce post m'ont envoyé dans la bonne direction. La seule adaptation que je devais faire pour que tout fonctionne avec le service upstart était de modifier /etc/mongod.conf. Recherchez les lignes qui se lisent:

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

Supprimez simplement le # situé devant l'interface http et redémarrez le service Mongodod:

Sudo restart mongod

Remarque: vous pouvez également activer l'interface de repos en ajoutant une ligne qui se lit rest=true juste en dessous de la ligne httpinterface mentionnée ci-dessus.

1
Coffee_fan

Interface HTTP pour MongoDB Déconseillé depuis la version 3.2 :)

Vérifier les documents Mongo: Interface d'état HTTP

0
Prab