我打开终端并输入以下命令
sudo mongod
然后输出
[initandlisten] waiting for connections on port 27017
我打开另一个终端并输入
sudo mongo
打开mongo shell并提示输入mongo命令,但是当我转到localhost / 27017时,我收到以下消息:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
我使用express创建了一个简单的nodejs应用程序,当我POST
数据时,似乎mongodb被挂起了。这是我在终端中收到的消息,我在其中启动我的快速应用程序,页面从不发布数据。所以我认为问题在于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);
...
答案 0 :(得分:61)
在Mongo 3.6之前:
您可以使用
启动mongodbmongod --httpinterface
并在
上访问它http://localhost:28017
从版本2.6开始:MongoDB默认禁用HTTP接口。
<强>更新强>
HTTP接口和REST API
MongoDB 3.6删除了已弃用的HTTP接口和REST API MongoDB的。
答案 1 :(得分:10)
默认情况下,MongoDB有一个简单的基于Web的管理端口,位于28017。
默认端口27017没有HTTP访问权限(这是错误消息尝试建议的内容)。默认端口用于本机驱动程序访问,而不是HTTP流量。
要访问MongoDB,您需要使用MongoDB native driver for NodeJS之类的驱动程序。你赢了&#34; POST&#34;直接到MongoDB(但您可以使用使用本机驱动程序的express创建RESTful API)。相反,您将使用一个包装库来方便访问MongoDB。您还可以考虑使用Mongoose(使用本机驱动程序),它在NodeJS中为MongoDB添加类似ORM的模型。
如果您无法访问web interface,则可能会被停用。通常情况下,除非您检查日志等,否则我不会指望您进行开发。
答案 2 :(得分:6)
与前面提到的评论一样,消息&#34;看起来您正试图通过本机驱动程序端口上的HTTP访问MongoDB。&#34;这是一个警告,因为你误解了这一行: mongoose.connect(&#39; mongodb的://本地主机/信息&#39); 并浏览此网址: http://localhost:28017/
但是,如果您想查看mongo的管理网页,可以使用此命令执行此操作:
mongod --rest --httpinterface
浏览此网址: http://localhost:28017/
参数httpinterface激活管理网页,参数休息所需的激活页面所需的其他服务
答案 3 :(得分:1)
我在ubuntu 14.04,mongod注册为upstart服务。这篇文章的答案让我朝着正确的方向前进。我必须做的唯一调整是使用upstart服务来编辑/etc/mongod.conf
。查找以下行:
# Enable the HTTP interface (Defaults to port 28017).
# httpinterface = true
只需删除httpinterface前面的#
并重新启动mongod服务:
sudo restart mongod
注意:您还可以通过在上面提到的http接口线正下方添加一条读取
rest=true
的行来启用其余接口。
答案 4 :(得分:0)
MongoDB的HTTP接口自3.2版以来已弃用:)
检查Mongo文档:HTTP Status Interface