Mongoose mit MongoDB und NodeJS einrichten

Überblick zu Mongoose

Mongoose ist eine ODM-Bibliothek (Object Data Modeling), die auf dem MongoDB-Driver aufsetzt. Sie ermöglicht eine saubere, kompakte Arbeit mit MongoDB und erleichtert die Objektmodellierung in einer NodeJS-Umgebung.

Voraussetzungen

Bevor du loslegst, solltest du idealerweise:

  • einen Nicht-Root-Benutzer mit sudo-Rechten einrichten.
  • sicherstellen, dass dein Server vollständig aktuell ist.
  • prüfen, ob build-essential installiert ist. Falls nicht, installiere es mit:

$ sudo apt install build-essential

1. MongoDB

Installiere MongoDB.

$ sudo apt install mongodb

Überprüfe, ob die Installation korrekt läuft. In der Statusausgabe solltest du „active (running)“ sehen.

$ sudo systemctl status mongodb
Active: active (running)

2. NodeJS und NPM

Füge das neueste stabile NodeJS-Repository hinzu.

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Installiere NodeJS.

Stelle sicher, dass NodeJS und NPM korrekt installiert sind.

$ node -v && npm -v
v12.x.x
6.x.x

3. Mongoose-Projekt initialisieren

Lege das Hauptverzeichnis für dein Projekt an.

$ cd ~
$ mkdir mongooseProject && cd mongooseProject

Initialisiere ein NodeJS-Entwicklungssetup, damit automatisch eine package.json erstellt wird:

Beantworte die kurzen Einrichtungsfragen passend zu deinem Projekt. Wenn du zum Beispiel jedes Mal nur Enter drückst und damit die Standardwerte übernimmst, antwortet npm init etwa so:

About to write to /root/mongooseProject/package.json:

{
"name": "mongooseproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

Installiere anschließend im Projektstamm die benötigten Pakete mit npm:

$ npm install --save mongoose

4. Ein Modell definieren

Erstelle im Projektstamm einen Ordner namens Models und wechsle hinein:

$ cd ~/mongooseProject
$ mkdir Models && cd Models

Erstelle connectDB.js. Diese Datei enthält die Verbindungslogik für deinen MongoDB-Server.

Füge Folgendes in connectDB.js ein.

const mongoose = require('mongoose'); // Import mongoose library

module.exports = function(uri) {
    mongoose.connect(uri, {  //attempt to connect to database
        useNewUrlParser: true, // Recommended, insures support for future MongoDB drivers
        useUnifiedTopology: true // Recommended, uses new MongoDB topology engine
    }).catch(error => console.log(error)) // Error handling


    mongoose.connection.on('connected', function () { // On connection
        console.log('Successful connection with database: ' + uri); // Callback for successful connection
    });
}

Erstelle Users.js. Diese Datei enthält das Modell für die Datenbank-Collection Users.

Füge Folgendes in Users.js ein, um ein grundlegendes Users-Schema zu definieren.

const mongoose = require("mongoose"); // Import mongoose library
const Schema = mongoose.Schema // Define Schema method

// Schema
var UsersSchema = new Schema({ // Create Schema
    name: String, // Name of user
    age: Number, // Age of user
    role: String // Role of user
})

// Model
var Users = mongoose.model("Users", UsersSchema) // Create collection model from schema
module.exports = Users // export model

5. Dokumente in MongoDB einfügen

Lege insertUser.js im Projektstamm an.

$ cd ~/mongooseProject
$ nano insertUser.js

Füge Folgendes in insertUser.js ein. Dieses Script schreibt Dokumente in die Users-Collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

var insertedUser = new Users({ // Create new document
    name: "John Doe",
    age: 18,
    role: "Example User"
})

insertedUser.save(err => { // save document inside Users collection
    if(err) throw err // error handling
    console.log("Document inserted!")
    mongoose.disconnect() // disconnect connection from database once document is saved
})

Starte insertUser.js.

$ node insertUser.js
Successful connection with database: mongodb://localhost:27017/mongoose
Document inserted!

6. Dokumente aus MongoDB lesen

Lege readUsers.js im Projektstamm an.

$ cd ~/mongooseProject
$ nano readUsers.js

Füge den folgenden Inhalt in readUsers.js ein. Dieses Script liest Dokumente aus der Users-Collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

Users.find({}, (err, users)=>{ //find and return all documents inside Users collection
    if(err) throw err // error handling
    console.log(users)
    mongoose.disconnect()
})

Führe readUsers.js aus. Das Ergebnis ist ein Array aus Objekten.

$ node readUsers.js
Successful connection with database: mongodb://localhost:27017/mongoose
[ { _id: ************************,
    name: 'John Doe',
    age: 18,
    role: 'Example User',
    __v: 0 } ]

Fazit

Du hast Mongoose so eingerichtet, dass es mit MongoDB zusammenarbeitet. Für weitere Details sieh dir die Mongoose-API-Dokumentation an.

Mongoose mit MongoDB und NodeJS einrichten

Überblick zu Mongoose

Mongoose ist eine ODM-Bibliothek (Object Data Modeling), die auf dem MongoDB-Driver aufsetzt. Sie ermöglicht eine saubere, kompakte Arbeit mit MongoDB und erleichtert die Objektmodellierung in einer NodeJS-Umgebung.

Voraussetzungen

Bevor du loslegst, solltest du idealerweise:

  • einen Nicht-Root-Benutzer mit sudo-Rechten einrichten.
  • sicherstellen, dass dein Server vollständig aktuell ist.
  • prüfen, ob build-essential installiert ist. Falls nicht, installiere es mit:

$ sudo apt install build-essential

1. MongoDB

Installiere MongoDB.

$ sudo apt install mongodb

Überprüfe, ob die Installation korrekt läuft. In der Statusausgabe solltest du „active (running)“ sehen.

$ sudo systemctl status mongodb
Active: active (running)

2. NodeJS und NPM

Füge das neueste stabile NodeJS-Repository hinzu.

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Installiere NodeJS.

Stelle sicher, dass NodeJS und NPM korrekt installiert sind.

$ node -v && npm -v
v12.x.x
6.x.x

3. Mongoose-Projekt initialisieren

Lege das Hauptverzeichnis für dein Projekt an.

$ cd ~
$ mkdir mongooseProject && cd mongooseProject

Initialisiere ein NodeJS-Entwicklungssetup, damit automatisch eine package.json erstellt wird:

Beantworte die kurzen Einrichtungsfragen passend zu deinem Projekt. Wenn du zum Beispiel jedes Mal nur Enter drückst und damit die Standardwerte übernimmst, antwortet npm init etwa so:

About to write to /root/mongooseProject/package.json:

{
"name": "mongooseproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

Installiere anschließend im Projektstamm die benötigten Pakete mit npm:

$ npm install --save mongoose

4. Ein Modell definieren

Erstelle im Projektstamm einen Ordner namens Models und wechsle hinein:

$ cd ~/mongooseProject
$ mkdir Models && cd Models

Erstelle connectDB.js. Diese Datei enthält die Verbindungslogik für deinen MongoDB-Server.

Füge Folgendes in connectDB.js ein.

const mongoose = require('mongoose'); // Import mongoose library

module.exports = function(uri) {
    mongoose.connect(uri, {  //attempt to connect to database
        useNewUrlParser: true, // Recommended, insures support for future MongoDB drivers
        useUnifiedTopology: true // Recommended, uses new MongoDB topology engine
    }).catch(error => console.log(error)) // Error handling


    mongoose.connection.on('connected', function () { // On connection
        console.log('Successful connection with database: ' + uri); // Callback for successful connection
    });
}

Erstelle Users.js. Diese Datei enthält das Modell für die Datenbank-Collection Users.

Füge Folgendes in Users.js ein, um ein grundlegendes Users-Schema zu definieren.

const mongoose = require("mongoose"); // Import mongoose library
const Schema = mongoose.Schema // Define Schema method

// Schema
var UsersSchema = new Schema({ // Create Schema
    name: String, // Name of user
    age: Number, // Age of user
    role: String // Role of user
})

// Model
var Users = mongoose.model("Users", UsersSchema) // Create collection model from schema
module.exports = Users // export model

5. Dokumente in MongoDB einfügen

Lege insertUser.js im Projektstamm an.

$ cd ~/mongooseProject
$ nano insertUser.js

Füge Folgendes in insertUser.js ein. Dieses Script schreibt Dokumente in die Users-Collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

var insertedUser = new Users({ // Create new document
    name: "John Doe",
    age: 18,
    role: "Example User"
})

insertedUser.save(err => { // save document inside Users collection
    if(err) throw err // error handling
    console.log("Document inserted!")
    mongoose.disconnect() // disconnect connection from database once document is saved
})

Starte insertUser.js.

$ node insertUser.js
Successful connection with database: mongodb://localhost:27017/mongoose
Document inserted!

6. Dokumente aus MongoDB lesen

Lege readUsers.js im Projektstamm an.

$ cd ~/mongooseProject
$ nano readUsers.js

Füge den folgenden Inhalt in readUsers.js ein. Dieses Script liest Dokumente aus der Users-Collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

Users.find({}, (err, users)=>{ //find and return all documents inside Users collection
    if(err) throw err // error handling
    console.log(users)
    mongoose.disconnect()
})

Führe readUsers.js aus. Das Ergebnis ist ein Array aus Objekten.

$ node readUsers.js
Successful connection with database: mongodb://localhost:27017/mongoose
[ { _id: ************************,
    name: 'John Doe',
    age: 18,
    role: 'Example User',
    __v: 0 } ]

Fazit

Du hast Mongoose so eingerichtet, dass es mit MongoDB zusammenarbeitet. Für weitere Details sieh dir die Mongoose-API-Dokumentation an.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

TensorRT und ONNX: High-Performance-ML auf NVIDIA-GPUs

AI/ML, Tutorial
Vijonavor 31 mins Machine-Learning-Frameworks, Modell-Tools und Deployment-Strategien in der ML-Pipeline Machine-Learning-Frameworks, spezialisierte Modell-Tools und Deployment-Lösungen übernehmen jeweils unterschiedliche Aufgaben innerhalb eines Machine-Learning-(ML)-Workflows. In jeder Phase – von der Modellerstellung über…