Невозможно получить доступ к 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);
...
Ответы
Ответ 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