Подтвердить что ты не робот

Невозможно получить доступ к mongodb через браузер. Похоже, вы пытаетесь получить доступ к MongoDB через HTTP на родном порту драйвера.

Я открываю терминал и вводю следующие команды

sudo mongod

который затем выводит

[initandlisten] waiting for connections on port 27017

Я открываю другой терминал и вводим

sudo mongo

которые открывают оболочку mongo и запрашивают команды mongo, но когда я перехожу к localhost/27017, я получаю следующее сообщение:

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

Я создал простое приложение nodejs, используя экспресс, и когда я POST данные, кажется, монгодба повесил трубку. Это сообщение, которое я получаю в терминале, на котором я запускаю свое экспресс-приложение, и страница никогда не публикует данные. Поэтому я считаю, что проблема кроется в манго, но я не могу понять это.

POST /info 200 120002ms

Вот мой экспресс-код

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

Model

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);
...
4b9b3361

Ответ 1

До Mongo 3.6:

Вы можете запустить mongodb с помощью

mongod --httpinterface

И получить его на

http://localhost:28017

Начиная с версии 2.6: MongoDB по умолчанию отключает интерфейс HTTP.

Обновление

Интерфейс HTTP и REST API

MongoDB 3.6 удаляет устаревший HTTP-интерфейс и REST API для MongoDB.

См. Mongo http interface и rest api

Ответ 2

MongoDB имеет простой веб-административный порт по умолчанию 28017.

В стандартном порту 27017 нет HTTP-доступа (это то, что пытается сообщить сообщение об ошибке). Порт по умолчанию используется для доступа к собственному драйверу, а не для HTTP-трафика.

Для доступа к MongoDB вам понадобится драйвер, такой как родной драйвер MongoDB для NodeJS. Вы не будете "POST" напрямую в MongoDB (но вы можете создать RESTful API, используя экспресс, который использует родные драйверы). Вместо этого вы будете использовать библиотеку-обертку, которая упростит доступ к MongoDB. Вы также можете использовать Mongoose (который использует собственный драйвер), который добавляет ORM-подобную модель для MongoDB в NodeJS.

Если вы не можете перейти на веб-интерфейс, он может быть отключен. Обычно я не ожидал, что вам понадобится это для разработки, если вы не проверяете журналы и т.д.

Ответ 3

Как и предыдущий комментарий, сообщение "похоже, что вы пытаетесь получить доступ к MongoDB через HTTP на родном порту драйвера". это предупреждение, потому что вы не понимаете эту строку: mongoose.connect( 'MongoDB://локальный/информация'); и просматривая этот URL: http://localhost:28017/

Однако, если вы хотите увидеть веб-страницу администратора mongo, вы можете сделать это с помощью этой команды:

mongod --rest --httpinterface

просмотр этого URL: http://localhost:28017/

параметр httpinterface активирует веб-страницу администратора, а параметр остается необходимым для активации остальных сервисов, требуемых для страницы

Ответ 4

Я нахожусь в ubuntu 14.04, а mongod зарегистрирован как услуга выскочки. Ответы в этом сообщении послали меня в правильном направлении. Единственной адаптацией, которую я должен был сделать, чтобы заставить работать с помощью программы upstart, было отредактировать /etc/mongod.conf. Найдите строки, которые читаются:

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

Просто удалите # перед httpinterface и перезапустите службу mongod:

sudo restart mongod

Примечание. Вы также можете включить интерфейс для остального, добавив строку, которая читает rest=true прямо под указанной выше ссылкой httpinterface.

Ответ 5

HTTP-интерфейс для MongoDB Устаревший с версии 3.2:)

Проверить Mongo Docs: HTTP Status Interface