programing

브라우저를 통해 mongodb에 액세스할 수 없음 - 네이티브 드라이버 포트에서 HTTP를 통해 MongoDB에 액세스하려고 하는 것 같습니다.

lastmoon 2023. 6. 6. 10:33
반응형

브라우저를 통해 mongodb에 액세스할 수 없음 - 네이티브 드라이버 포트에서 HTTP를 통해 MongoDB에 액세스하려고 하는 것 같습니다.

터미널을 열고 다음 명령을 입력합니다.

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.

나는 express와 when을 사용하여 간단한 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('/')
        });
    }
};

모델

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

Mongo 3.6 이전 버전:

당신은 mongodb를 시작할 수 있습니다.

mongod --httpinterface

액세스할 수 있습니다.

http://localhost:28017

버전 2.6 이후: MongoDB는 기본적으로 HTTP 인터페이스를 비활성화합니다.

갱신하다

HTTP 인터페이스와 REST API

MongoDB 3.6은 사용되지 않는 HTTP 인터페이스와 MongoDB에 대한 REST API를 제거합니다.

Mongo http 인터페이스rest api 참조

MongoDB에는 기본적으로 28017에 있는 간단한 웹 기반 관리 포트가 있습니다.

기본 포트 27017에 HTTP 액세스가 없습니다(이는 오류 메시지가 표시하려는 것입니다).기본 포트는 HTTP 트래픽이 아닌 기본 드라이버 액세스에 사용됩니다.

MongoDB에 액세스하려면 NodeJS용 MongoDB 네이티브 드라이버와 같은 드라이버를 사용해야 합니다.MongoDB에 직접 "POST"하지는 않지만 기본 드라이버를 사용하는 express를 사용하여 RESTful API를 만들 수 있습니다.대신, 당신은 MongoDB에 쉽게 접근할 수 있는 래퍼 라이브러리를 사용할 것입니다.NodeJS에서 MongoDB에 대한 ORM과 유사한 모델을 추가하는 Mongoose(기본 드라이버 사용)를 사용하는 것도 고려할 수 있습니다.

인터페이스에 액세스할 수 없는 경우 비활성화될 수 있습니다.일반적으로 로그 등을 확인하지 않는 한 개발에 필요하지 않을 것이라고 생각합니다.

앞의 설명과 마찬가지로 "원본 드라이버 포트에서 HTTP를 통해 MongoDB에 액세스하려고 하는 것 같습니다."라는 메시지는 mongoose.connect('mongodb://localhost/info') 행을 잘못 이해하고 다음 URL을 탐색하는 경우의 경고입니다. http://localhost:28017/

그러나 mongo의 관리 웹 페이지를 보려면 다음 명령을 사용하여 확인할 수 있습니다.

mongod --rest --rest --rest 인터페이스

다음 URL 검색: http://localhost:28017/

매개 변수 http 인터페이스는 관리자 웹 페이지를 활성화하고 매개 변수 rest는 페이지가 필요로 하는 나머지 서비스를 활성화하는 데 필요합니다.

MongoDB용 HTTP 인터페이스 버전 3.2 이후 사용되지 않음 :)

MongoDocs 확인: HTTP 상태 인터페이스

저는 unbuntu 14.04에 있으며 mongod는 업스타트 서비스로 등록되어 있습니다.이 게시물의 답변은 저를 올바른 방향으로 이끌었습니다.이 잘 풀리게 할 은 편집하는 이었습니다./etc/mongod.conf다음과 같은 행을 찾습니다.

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

제거하기만 하면 됩니다.#서비스를 시작합니다. mongod를 다시 시작합니다.

sudo restart mongod

참고: 다음과 같은 행을 추가하여 나머지 인터페이스를 활성화할 수도 있습니다.rest=true위에서 언급한 http 인터페이스 라인 바로 아래.

언급URL : https://stackoverflow.com/questions/23446876/cannot-access-mongodb-through-browser-it-looks-like-you-are-trying-to-access-m

반응형