无法通过浏览器访问mongodb – 它看起来像试图通过本地驱动程序端口上的HTTP访问MongoDB

我打开terminal并input以下命令

sudo mongod 

然后输出

 [initandlisten] waiting for connections on port 27017 

我打开另一个terminal并进入

 sudo mongo 

它打开mongo shell并提示mongo命令,但是当我到localhost / 27017时,我收到以下消息:

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

我使用express创build了一个简单的nodejs应用程序,当我POST数据时,似乎mongodb挂起。 这是我在我开始我的快速申请的terminal收到的消息,并从来没有发布数据的页面。 所以我相信问题在于mongo,但是我不知道。

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

模型

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

你可以启动mongodb

 mongod --httpinterface 

并访问它

 http://localhost:28017 

从版本2.6开始:默认情况下,MongoDB禁用HTTP接口。

请参阅http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption–http表面

MongoDB默认有一个简单的基于web的pipe理端口28017。

在27017的默认端口(这是错误消息试图build议的)没有HTTP访问。 默认端口用于本地驱动程序访问,而不是HTTP通信。

要访问MongoDB,你需要使用像NodeJS的MongoDB本地驱动程序这样的驱动程序 。 您不会直接“发布”到MongoDB(但您可以使用使用本机驱动程序的express来创buildRESTful API)。 相反,您将使用一个包装器库来方便地访问MongoDB。 您也可以考虑使用Mongoose (使用本地驱动程序),它在NodeJS中为MongoDB添加类似ORM的模型。

如果您无法访问Web界面 ,则可能会被禁用。 通常情况下,除非你正在检查日志等,否则我不希望你需要它来进行开发。

就像之前的评论提到的一样,消息“看起来你试图通过本地驱动程序端口上的HTTP访问MongoDB”。 它是一个警告,因为你是误解这一行:mongoose.connect('mongodb:// localhost / info'); 并浏览这个url: http:// localhost:28017 /

但是,如果您想要查看mongo的pipe理员网页,可以使用以下命令:

mongod –rest –http表面

浏览这个url: http:// localhost:28017 /

参数httpinterface激活pipe理网页,并且该参数需要激活页面所需的其余服务

我在Ubuntu 14.04和Mongo被注册为一个新贵的服务。 在这个post的答案给了我正确的方向。 我必须做的唯一适应事情就是编辑/etc/mongod.conf 。 寻找读取的行:

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

只需删除httpinterface前面的#并重新启动mongod服务:

 sudo restart mongod 

注意:您也可以通过添加一行读取上面的httpinterface行下方的rest=true的行来启用其余接口。

MongoDB的HTTP接口从版本3.2开始弃用:)

检查Mongo Docs: HTTP状态接口