MongoDB verbindung aufbauen


coldstone28

Mitglied
Hallo zusammen,

habe ein problem beim verbindung aufbauen zu MongoDB.

Javascript:
var MongoClient = require('mongodb').MongoClient,format = require('util').format;

MongoClient.connect('mongodb://xxxxxxxxxxxxxxx:27017', function(err, db){

    if(err){
        throw err;
    } else {
        console.log("Verbunden");
    }
    db.close();
});
unter den xxxxxx muss ja laut doku der hostname rein.
Wenn ich jetzt aber über node, mongodb auf meinen webserver installiert habe, was muss denn dann dort stehen?

Habe es mal mit
Javascript:
MongoClient.connect('mongodb://localhost/datenbank', function(err, db){
aber ist ja nicht lokal auf meinem Rechner, sondern auf dem Server installiert.
Verbindung kommt nicht zustande.
 

ComFreek

Mod | @comfreek
Moderator
Wenn ich jetzt aber über node, mongodb auf meinen webserver installiert habe, was muss denn dann dort stehen?
Läuft ein Mongodb Server überhaupt oder hast du nur installiert, aber nicht gestartet?

Du müsstest den Hostnamen oder die IP-Adresse herausbekommen, unter der dein Server von außen aus ansprechbar ist. Hast du eine eigene IP-Adresse für deinen Server?
 

coldstone28

Mitglied
Ich versuche mit service mongodb start es zu starten.
Es wird aber folgende fehlermeldung in der Console ausgegeben. Failed to start mongodb.service: Unit mongodb.service not found.

Du müsstest den Hostnamen oder die IP-Adresse herausbekommen, unter der dein Server von außen aus ansprechbar ist. Hast du eine eigene IP-Adresse für deinen Server?
Den hostnamen habe ich per hostname -f erhalten und auch eingegeben.
 

coldstone28

Mitglied
Habe ich versucht. Leider ohne erfolg.
Habe es auch nach dieser anleitung versucht, aber spätestens bei
systemctl enable mongod.service

bekomme ich die fehlermeldung
Failed to start mongod.service: Unit mongod.service not found.


UPDATE: Hat jetzt endlich geklappt. Vielen dank für die Unterstützung. Mongodb läuft jetzt.
 
Zuletzt bearbeitet:

coldstone28

Mitglied
Ich hätte da doch nochmal eine frage.

Wenn ich mich mit dem Server verbinde und die JavaScript Datei direkt über die Konsole starte, kriege ich eine verbindung zu Mongodb und meine collection wird erstellt.
Javascript:
var MongoClient = require('mongodb').MongoClient;


MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("neuerflieger");
  var myobj = { Flieger: "Ti Fighter", Schusskraft: "50" };
  dbo.collection("neuerflieger").insertOne(myobj, function(err, res) {
    if (err) throw err;
    console.log("Flieger wurde hinzugefügt");
    db.close();
  });
});
Wenn ich aber diesen Code in einen Html Dokument reinpacke und vom rechner aus die Seite aufrufe,
kommt die verbindung nicht zustande und dementsprechent wird auch in der Datenbank nichts angelegt.

Mache ich mir das zu einfach oder liegt das Problem eventuell an:
Javascript:
var url = "mongodb://localhost:27017/";
Ich meine wegen localhost?

Meine test.html:

Javascript:
<html>
  <head>
    <title>Space Run</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.min.js"></script>
  </head>
  <body>
    
    <script id="ausgabe" type="text/x-handlebars-template">
      <p>Herzlich Willkommen {{spieler}}! </p>
      <p>Sie fliegen heute mit dem {{raumschiff}}!</p>
      <p>Guten Flug zum {{ziel}}!</p>

    </script>
 
<div id="content"></div>

<button id="mongodb_connect" onclick="connect_db()">Verbindung zur Datenbank herstellen!</button>

<p id="connect">Verbindung ?</p>
 
    <script type="text/javascript">
      var source = document.getElementById("ausgabe").innerHTML;
      var template = Handlebars.compile(source);
      var context = {spieler: "monkey", raumschiff: "Tie Fighter", ziel: "Mars"};
      document.getElementById("content").innerHTML = template(context);
    </script>

    <script>

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("neuerflieger");
  var myobj = { Flieger: "Ti Fighter", Schusskraft: "50" };
  dbo.collection("neuerflieger").insertOne(myobj, function(err, res) {
    if (err) throw err;
    console.log("Flieger wurde hinzugefügt");
    db.close();
  });
});


    </script>
  </body>
</html>