it-swarm.com.de

Mongodb kann nicht über Browser aufgerufen werden. Es scheint, als würden Sie versuchen, über den nativen Treiberport auf MongoDB über HTTP zuzugreifen

Ich öffne das Terminal und gebe die folgenden Befehle ein

Sudo mongod

was dann ausgibt

[initandlisten] waiting for connections on port 27017

Ich öffne ein anderes Terminal und gehe hinein

Sudo mongo

welche die Mongo-Shell öffnet und zur Eingabe von Mongo-Befehlen auffordert, aber wenn ich zu localhost/27017 gehe, erhalte ich die folgende Meldung:

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

Ich habe eine einfache nodejs-Anwendung mit express erstellt, und wenn ich POST-Daten habe, scheint der mongodb aufgehängt zu sein. Dies ist die Nachricht, die ich in dem Terminal erhalte, in dem ich meine Expressbewerbung starte und die Seite niemals die Daten bereitstellt. Ich glaube, das Problem liegt im Mongo, aber ich kann es nicht herausfinden. 

POST /info 200 120002ms

Hier ist mein Expresscode

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

Modell

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

Before Mongo 3.6:

Sie können mongodb mit starten 

mongod --httpinterface

Und darauf zugreifen

http://localhost:28017

Seit Version 2.6: MongoDB deaktiviert standardmäßig die HTTP-Schnittstelle.

Update

HTTP-Schnittstelle und REST API

MongoDB 3.6 entfernt die veraltete HTTP-Schnittstelle und die API REST nach MongoDB.

Siehe Mongo http interface und rest api

61
David

MongoDB verfügt standardmäßig über einen einfachen webbasierten Administrationsport bei 28017.

Es gibt keinen HTTP-Zugriff am Standardport 27017 (dies ist, was die Fehlernachricht vorschlägt). Der Standardport wird für den nativen Treiberzugriff verwendet, nicht für den HTTP-Verkehr.

Um auf MongoDB zuzugreifen, müssen Sie einen Treiber wie den nativen MongoDB-Treiber für NodeJS verwenden. Sie werden nicht direkt zu MongoDB "POST" (Sie können jedoch eine RESTful-API mit express erstellen, die die nativen Treiber verwendet). Stattdessen verwenden Sie eine Wrapper-Bibliothek, die den Zugriff auf MongoDB erleichtert. Sie könnten auch erwägen, Mongoose (der den nativen Treiber verwendet) zu verwenden, um ein ORM-ähnliches Modell für MongoDB in NodeJS hinzuzufügen.

Wenn Sie nicht zur Weboberfläche gelangen, ist sie möglicherweise deaktiviert. Normalerweise würde ich nicht erwarten, dass Sie es für die Entwicklung benötigen, wenn Sie Protokolle und ähnliches prüfen.

9
WiredPrairie

Wie im vorherigen Kommentar erwähnt, erscheint die Meldung "Es scheint, als würden Sie versuchen, über den nativen Treiberport auf MongoDB über HTTP zuzugreifen." Es ist eine Warnung, weil Sie diese Zeile nicht verstehen: mongoose.connect ('mongodb: // localhost/info'); und diese URL durchsuchen: http: // localhost: 28017/

Wenn Sie jedoch die Admin-Webseite des Mongo anzeigen möchten, können Sie dies mit folgendem Befehl tun:

mongod --rest --httpinterface

durchsuchen dieser URL: http: // localhost: 28017/

der Parameter httpinterface aktiviert die Verwaltungswebseite, und der Parameter bleibt für die Aktivierung der von der Seite benötigten Restdienste erforderlich

6
nekperu15739

Ich bin in Ubuntu 14.04 und mongod ist als Upstart-Service registriert. Die Antworten in diesem Beitrag schickten mich in die richtige Richtung. Die einzige Anpassung, die ich vornehmen musste, um den Upstart-Dienst zum Laufen zu bringen, bestand darin, /etc/mongod.conf zu bearbeiten. Suchen Sie nach den Zeilen, die lesen:

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

Entfernen Sie einfach den # vor httpinterface und starten Sie den Mongod-Dienst neu:

Sudo restart mongod

Hinweis: Sie können die Restschnittstelle auch aktivieren, indem Sie eine Zeile hinzufügen, die rest=true direkt unter der oben genannten httpinterface-Zeile liest.

1
Coffee_fan

HTTP-Schnittstelle für MongoDB veraltet seit Version 3.2 :)

Überprüfen Sie Mongo Docs: HTTP Status Interface

0
Prab