Impossible d'accéder à mongodb par le navigateur - il semble que vous essayez D'accéder à MongoDB par HTTP sur le port de pilote natif

j'ouvre le terminal et j'entre les commandes suivantes

sudo mongod

qui sort alors

[initandlisten] waiting for connections on port 27017

j'ouvre un autre terminal et entrez

sudo mongo

qui ouvre le shell mongo et les commandes mongo, mais quand je vais à 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 quand je POST données, il semble mongodb est accrochée. C'est le message que je reçois dans le terminal dans lequel je commence mon application express et la page ne poste jamais les données. Je pense donc que le problème réside au sein de mongo, mais je ne peux pas le résoudre.

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
demandé sur Michael 2014-05-03 20:15:02

5 réponses

Avant Mongo 3.6:

mongod --httpinterface

Et accès sur

http://localhost:28017

mise à Jour

Interface HTTP et API REST

MongoDB 3.6 supprime L'interface HTTP dépréciée et REST API à MongoDB.

Voir Mongo interface http de repos et de api

60
répondu David 2018-01-20 08:28:41

MongoDB a un simple port d'administration basé sur le web à 28017 par défaut.

il n'y a pas D'accès HTTP au port par défaut de 27017 (ce que le message d'erreur essaie de suggérer). Le port par défaut est utilisé pour l'accès aux pilotes natifs, pas pour le trafic HTTP.

pour accéder À MongoDB, vous aurez besoin d'utiliser un pilote comme le MongoDB pilote natif pour NodeJS. Vous ne "posterez" pas directement à MongoDB (mais vous pouvez créer une API RESTful en utilisant express qui utilise les pilotes natifs). Au lieu de cela, vous utiliserez une bibliothèque wrapper qui rend L'accès à MongoDB pratique. Vous pouvez également envisager d'utiliser Mangouste (qui utilise le pilote natif) qui ajoute un modèle ORM-like pour MongoDB dans NodeJS.

Si vous ne pouvez pas obtenir à l' interface web, il peut être désactivé. Normalement, Je ne m'attendrais pas à ce que vous en ayez besoin pour faire du développement à moins que vous ne vérifiiez les journaux et autres.

9
répondu WiredPrairie 2014-05-03 16:58:56

comme la précédente mention de commentaire, le message "il semble que vous essayez d'accéder à MongoDB sur HTTP sur le port de pilote natif."sa un avertissement parce que vous êtes missunderstanding cette ligne: Mongoose.connect ('mongodb: / / localhost / info')); et en parcourant cette url: http://localhost:28017/

cependant, si vous voulez voir la page admin de mongo, vous pouvez le faire, avec cette commande:

mongod --reste-httpinterface

en parcourant ceci URL: http://localhost:28017/

le paramètre httpinterface active la page Web admin, et le paramètre rest est nécessaire pour activer les services rest dont la page a besoin

6
répondu nekperu15739 2015-04-07 16:05:48

je suis dans ubuntu 14.04 et mongod est enregistré comme un service de démarrage. Les réponses dans ce post m'ont envoyé dans la bonne direction. La seule adaptation que j'ai eu à faire pour que les choses fonctionnent avec le service upstart était d'éditer /etc/mongod.conf. Recherchez les lignes de lecture:

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

il suffit de supprimer le # devant httpinterface et redémarrez le service mongod:

sudo restart mongod

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

1
répondu Coffee_fan 2015-07-26 18:08:28

interface HTTP pour MongoDB dépréciée depuis la version 3.2 :)

Vérifier Mongo Docs: Interface de statut HTTP

0
répondu Prab 2017-03-16 13:43:11