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);
...
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.
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.
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
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.
interface HTTP pour MongoDB dépréciée depuis la version 3.2 :)
Vérifier Mongo Docs: Interface de statut HTTP