无法通过浏览器访问mongodb - 看起来您正在尝试通过本机驱动程序端口上的HTTP访问MongoDB

Mic*_*ael 23 mongodb node.js express

我打开终端并输入以下命令

sudo mongod
Run Code Online (Sandbox Code Playgroud)

然后输出

[initandlisten] waiting for connections on port 27017
Run Code Online (Sandbox Code Playgroud)

我打开另一个终端然后进入

sudo mongo
Run Code Online (Sandbox Code Playgroud)

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

It looks like you are trying to access MongoDB over HTTP on the native driver port.
Run Code Online (Sandbox Code Playgroud)

我使用express创建了一个简单的nodejs应用程序,当我POST数据时,似乎mongodb被挂起了.这是我在终端中收到的消息,我在其中启动了快速应用程序,页面从不发布数据.所以我认为问题在于mongo,但我无法弄明白.

POST /info 200 120002ms
Run Code Online (Sandbox Code Playgroud)

这是我的快递代码

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('/')
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

模型

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/info');

var schema = new mongoose.Schema({
    firstName: String,
    lastName: String
});

module.exports = mongoose.model('info',schema);
Run Code Online (Sandbox Code Playgroud)

app.js

...
app.get('/info',info.form);
app.post('/info',info.submit);
...
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 63

在Mongo 3.6之前:

你可以用mongodb开始

mongod --httpinterface
Run Code Online (Sandbox Code Playgroud)

并访问它

http://localhost:28017
Run Code Online (Sandbox Code Playgroud)

从版本2.6开始:MongoDB默认禁用HTTP接口.

更新

HTTP接口和REST API

MongoDB 3.6删除了已弃用的HTTP接口和REST API到MongoDB.

Mongo http接口和rest api


Wir*_*rie 10

默认情况下,MongoDB在28017有一个简单的基于Web的管理端口.

默认端口27017没有HTTP访问(这是错误消息试图建议的).默认端口用于本机驱动程序访问,而不是HTTP流量.

要访问MongoDB,您需要使用类似于NodeJSMongoDB本机驱动程序的驱动程序.您不会直接"POST"到MongoDB(但您可以使用使用本机驱动程序的express创建RESTful API).相反,您将使用一个包装库来方便访问MongoDB.您也可以考虑使用Mongoose(使用本机驱动程序),它在NodeJS中为MongoDB添加类似ORM的模型.

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


nek*_*739 6

与前面提到的评论一样,消息"看起来您正试图通过本机驱动程序端口上的HTTP访问MongoDB." 这是一个警告,因为你误解了这一行:mongoose.connect('mongodb:// localhost/info'); 并浏览此网址: http:// localhost:28017 /

但是,如果您想查看mongo的管理网页,可以使用以下命令执行此操作:

mongod --rest --httpinterface

浏览此网址: http:// localhost:28017 /

参数httpinterface激活管理网页,参数休息所需的激活页面所需的其余服务