2014-05-03 3 views
18

मैं टर्मिनल खोलने पर HTTP पर MongoDB पहुँच सकते हैं और निम्न कमांड दर्ज करने के लिए कोशिश कर रहे हैंब्राउज़र के माध्यम से MongoDB नहीं चला सकता - ऐसा लगता है कि देशी ड्राइवर बंदरगाह

sudo mongod 

जो तब आउटपुट

[initandlisten] waiting for connections on port 27017 

मैं एक और टर्मिनल खोलता हूं और

sudo mongo 

जो मोंगो खोल खोलता है और एफ को संकेत देता है या मोंगो आदेशों, लेकिन जब मैं स्थानीय होस्ट/27017 मैं निम्नलिखित संदेश प्राप्त करने के लिए जाना:

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

मैं एक्सप्रेस का उपयोग करते हुए एक सरल NodeJS आवेदन बनाया है और जब मैं POST डेटा ऐसा लगता है MongoDB लटका दिया जाता है। यह संदेश है जो मैं टर्मिनल, जिसमें मैं अपने एक्सप्रेस आवेदन शुरू करने और पेज डेटा पोस्ट कभी नहीं में प्राप्त करते हैं। तो मुझे विश्वास है कि समस्या मोंगो के भीतर है लेकिन मैं इसे समझ नहीं सकता।

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

आप जब एक वेब ब्राउज़र के साथ पहुंच का परीक्षण संदेश हो रही है, या जहां आप यह संदेश देख रहे हैं? –

+0

हाँ, मैं एक वेब ब्राउज़र – Michael

+0

@WiredPrairie में संदेश प्राप्त हो रहा वहाँ app.post है() एक्सप्रेस में MongoDB नहीं, जब मैं स्थानीय होस्ट करने के लिए/28017 मैं त्रुटि नहीं मिला एक पेज प्राप्त जाना। – Michael

उत्तर

8

MongoDB 28017 डिफ़ॉल्ट रूप से पर एक सरल वेब आधारित प्रशासनिक बंदरगाह है।

27017 का डिफ़ॉल्ट पोर्ट (जो क्या त्रुटि संदेश सुझाव देने के लिए कोशिश कर रहा है) में कोई HTTP पहुँच नहीं है। डिफ़ॉल्ट पोर्ट का उपयोग मूल ड्राइवर पहुंच के लिए किया जाता है, न कि HTTP यातायात।

MongoDB पहुँचने के लिए आपको MongoDB native driver for NodeJS की तरह एक ड्राइवर का उपयोग करना होगा। आप नहीं MongoDB करने के लिए "पोस्ट" सीधे (लेकिन आप कौन से स्थानीय ड्राइवरों का उपयोग करता एक्सप्रेस का उपयोग करते हुए एक RESTful API बना सकता है) होगा। इसके बजाए, आप एक रैपर लाइब्रेरी का उपयोग करेंगे जो मोंगोडीबी को सुविधाजनक बनाता है। तुम भी जो NodeJS में MongoDB के लिए एक ORM की तरह मॉडल कहते हैं Mongoose का उपयोग कर (जो देशी ड्राइवर का उपयोग करता है) सोच सकते हैं।

आप web interface के लिए नहीं मिल सकता है, यह निष्क्रिय किया जा सकता है। आम तौर पर, मैं उम्मीद नहीं करता कि आपको विकास करने के लिए इसकी आवश्यकता होगी जबतक कि आप लॉग और इस तरह की जांच नहीं कर रहे हों।

+0

मैं भी 'MongoDB' का उपयोग कर एक संबंध स्थापित करने के लिए है या मैं बस डेटाबेस से कनेक्ट करने के लिए 'नेवला' का उपयोग कर सकते है। मैंने उपरोक्त अपना एक्सप्रेस कोड पोस्ट किया। धन्यवाद – Michael

+0

तुम बस डेटाबेस से कनेक्ट करने के लिए (यह मानते हुए कि आप इसे शुरू कर दिया है, के रूप में अपने प्रश्न के शुरू में दिखाया गया है) नेवला उपयोग कर सकते हैं। – WiredPrairie

60

मोंगो 3.6 से पहले:

आप MongoDB

mongod --httpinterface 

साथ और

http://localhost:28017 

पर संस्करण 2.6 के बाद से शुरू हो सकता है पहुँच यह: MongoDB डिफ़ॉल्ट रूप से HTTP इंटरफ़ेस अक्षम करता है।

अद्यतन

HTTP इंटरफेस और REST API

MongoDB 3.6 MongoDB को पदावनत HTTP इंटरफ़ेस और REST API निकाल देता है।

देखें Mongo http interface and rest api

5

पिछली टिप्पणी उल्लेख की तरह, संदेश "ऐसा लगता है कि देशी ड्राइवर पोर्ट पर HTTP पर MongoDB का उपयोग करने की कोशिश कर रहे हैं।" इसकी एक चेतावनी है क्योंकि आप इस लाइन missunderstanding रहे हैं: mongoose.connect ('MongoDB: // स्थानीय होस्ट/जानकारी'); और इस यूआरएल ब्राउज़ कर: http://localhost:28017/

हालांकि, अगर आप मोंगो के व्यवस्थापक वेब पेज देखना चाहते हैं, आप यह कर सकता है, इस आदेश के साथ:

mongod --rest --httpinterface

ब्राउज़िंग इस यूआरएल: http://localhost:28017/

पैरामीटर httpinterface व्यवस्थापक वेब पेज को सक्रिय, और पैरामीटर आराम इसकी जरूरत बाकी सेवाओं को सक्रिय करने के लिए पेज

की आवश्यकता होती है
1

मैं कर रहा हूँ Ubuntu 14.04 और mongod में एक नवोदय सेवा के रूप में पंजीकृत है। इस पोस्ट के उत्तरों ने मुझे सही दिशा में भेजा। चीजों को अपस्टार्ट सेवा के साथ काम करने के लिए मुझे केवल एक ही अनुकूलन करना था /etc/mongod.conf संपादित करना।

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

बस httpinterface के सामने # हटाने और mongod सेवा को पुनः आरंभ: लाइनों है कि पढ़ने के लिए देखो

sudo restart mongod 

ध्यान दें: आप भी एक पंक्ति जोड़कर बाकी इंटरफ़ेस सक्षम कर सकते हैं जो ऊपर वर्णित httpinterface लाइन के ठीक नीचे rest=true पढ़ता है। के बाद से संस्करण 3.2 :)

चेक मोंगो डॉक्स MongoDB पदावनत के लिए

0

HTTP इंटरफ़ेस: HTTP Status Interface

+0

क्या आप कृपया बहिष्करण का संदर्भ जोड़ सकते हैं? – NobbZ

संबंधित मुद्दे