Node.js + MongoDB – Durchführen von CRUD-Operationen

In diesem Beitrag werden wir uns ansehen, wie wir CRUD-Operationen implementieren können Node.js und MongoDB als Datenbank. CRUD steht für Create Read Update Delete. Die Programmiersprache, die wir hierfür verwenden würden, basiert auf Javascript Node.js (Lesen Sie: Einführung in Node.js) Rahmen und MongoDB als NoSQL-Datenbank. Und dieses Beispiel wird befehlszeilenbasiert sein und daher werden wir Benutzereingaben von der Befehlszeile entgegennehmen. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich oder posten Sie sie auf unserer Facebook-Seite.

NodeJS und MongoDB

Um CRUD-Operationen zu demonstrieren, wähle ich ein gängiges Beispiel für das Speichern, Abrufen, Aktualisieren und Löschen eines Buchs aus der Datenbank aus. Das Buch hat die folgenden Attribute: Name, ISBN, Autoren, Seitenzahl. Am Ende dieses Beitrags habe ich den vollständigen Beispielcode für das Node.JS- und MongoDB-Integrationsbeispiel angegeben. In meinem nächsten Artikel werde ich über die Verwendung von Mongoose schreiben, um die Datenbankmodellierung mit Node.js zu erleichtern.

lesen Sie auch:

  • Wie installiere ich Bower?
  • PrimeFaces + Spring Data + MongoDB-Integration

Dieser Beitrag ist in folgende Teile unterteilt:

  • Lesen von Benutzereingaben über die Befehlszeile in Node.js
  • Herstellen einer Verbindung zu MongoDB in Node.js
  • Einfügen eines Datensatzes in MongoDB in Node.js
  • Auflisten/Lesen von Datensätzen aus MongoDB in Node.js
  • Aktualisieren von Datensätzen in MongoDB in Mode.js
  • Datensätze aus MongoDB in Node.js löschen
  • Node.js- und MongoDB-Integrationsbeispiel
  • Lesen von Benutzereingaben über die Befehlszeile in Node.js

    Node.js organisiert den Code in verschiedene Node-Pakete (stellen Sie sich diese als Pakete in Java vor) und wir können diese Pakete/Module mithilfe von verwenden require Funktion. In ähnlicher Weise gibt es in Node.js ein Modul mit dem Namen readline die APIs zum Lesen aus verschiedenen Eingabeströmen bereitstellt. Der folgende Code zeigt, wie man von der Befehlszeile in Node.js lesen kann

    //input.js
    
    //Importing the relevant module
    var readline = require('readline');
    
    //Initializing the reading interface to read from
    //stdin and write to stdout
    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    
    //Asking for user input and providing a callback to deal with the user input
    rl.question("What is your name? ", function(answer){
      console.log("Your name is: " + answer);
      console.log("Press Ctrl+C to end the program");
    });
    
    

    Die Ausgabe wäre:

    G:\node\testapp>node input.js
    What is your name? Mohamed
    Your name is: Mohamed
    Press Ctrl+C to end the program
    

    Herstellen einer Verbindung zu MongoDB in Node.js

    • Lesen : So installieren Sie MongoDB unter Windows

    Sehen wir uns nun an, wie man von Node.js aus eine Verbindung zu MongoDB herstellt. Wie beim Lesen von Benutzereingaben, z MongoDB Außerdem haben wir ein Node.js-Modul namens mongodb. Dieses Modul müsste jedoch über heruntergeladen werden NPM (Node Package Manager). Das MongoDB-Modul stellt den Treiber für die Verbindung zur MongoDB-Datenbank über Javascript bereit. Um das Mongodb-Modul mit NPM zu installieren, führen Sie den folgenden Befehl an Ihrer Eingabeaufforderung aus: npm install mongodb.

    Hinweis: NPM wird mit der Node.js-Installation geliefert und Sie müssen nichts weiter tun, um NPM zu installieren.

    Der folgende Code zeigt, wie Sie eine Verbindung zu MongoDB herstellen und Datensätze aus einer Sammlung abrufen, in der bereits wenige Datensätze vorhanden sind. Es ist erforderlich, sich mit den MongoDB-Befehlen vertraut zu machen. Eine sehr ausführliche Dokumentation finden Sie zu MongoDB Hier.

    //FileName: mongodb.js
    
    //Importing the required mongodb driver
    var MongoClient = require('mongodb').MongoClient;
    
    //MongoDB connection URL
    var dbHost="mongodb://localhost:27017/test";
    
    //Name of the collection
    var myCollection = "people";
    
    //Connecting to the Mongodb instance.
    //Make sure your mongodb daemon mongod is running on port 27017 on localhost
    MongoClient.connect(dbHost, function(err, db){
      if ( err ) throw err;
      //Query Mongodb and iterate through the results
      db.collection(myCollection).find({},{},{}).toArray(
        function(err, docs){
          for(index in docs){
            console.log(docs[index]);
          }
        }
      );
    });
    
    

    Nachdem wir nun gesehen haben, wie man Benutzereingaben akzeptiert und wie man eine Verbindung zu MongoDB herstellt, werde ich als Nächstes anhand unseres Buchbeispiels zeigen, wie man CRUD-Operationen durchführt.

    CRUD-Operationen

    Wir würden die Daten berücksichtigen, die über die Befehlszeile in die Datenbank eingefügt werden sollen, und auch die Wahl des auszuführenden Vorgangs, z. B. ob Erstellen ODER Lesen ODER Aktualisieren ODER Löschen. Der folgende Code zeigt, wie das Menü gedruckt wird und akzeptiert die Benutzerauswahl für den Vorgang.

    var readline = require('readline');
    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    
    //The below code prints the menu
    var printMenu = function(db){
      console.log("Welcome to CRUD demo using Node.js and MongoDB");
      console.log("1. Insert a new Book");
      console.log("2. List all the books");
      console.log("3. Update the book by ISBN");
      console.log("4. Delete the book by ISBN");
      console.log("5. Quit");
      rl.question("Enter your choice: ", function(answer){
        console.log("Choice entered is: " + answer);
        switch(answer){
          case "1":
            insertBook(dbConn);
            break;
          case "2":
            listBooks(dbConn);
            break;
          case "3":
            updateBook(dbConn);
            break;
          case "4":
            deleteBook(dbConn);
            break;
          case "5":
            console.log("Press Ctrl+C to exit the program");
            return;
        }
    
      });
    }
    

    Einfügen eines Datensatzes in MongoDB in Node.js

    Das Einfügen eines neuen Datensatzes erfordert die Eingabe von Benutzereingaben, z. B. Name des Buchs, ISBN des Buchs, Autoren und Seitenzahl. Danach verwenden wir die MongoDB-API, um die Einfügeanweisung auszuführen. Der folgende Code ist die Methode zum Einfügen eines neuen Dokuments.

    var insertBook = function(db){
      rl.question("Enter the name of the book: ", function(bookName){
         rl.question("Enter the ISBN of the book: ", function(isbn){
           rl.question("Enter the authors of the book[Comma separated if more than 1]: ", function(author){
             rl.question("Enter the total number of pages: ", function(pageCount){
               db.collection(myCollection).find({isbn: isbn},{},{}).toArray(
                 function(err, docs){
                   if ( docs.length > 0){
                     console.log("Book with ISBN " + isbn + " already exists");
                     printMenu(dbConn);
                   }else{
                     db.collection(myCollection).insert({
                        'name':bookName,
                        'isbn': isbn,
                        'author': author,
                        'pages': pageCount
                      }, bookInsertHandler);
                   }
                 }
               );
             });
           });
         });
      });
    }
    

    Auflisten/Lesen von Datensätzen aus MongoDB in Node.js

    Die MongoDB-API bietet find Methode zum Abrufen der Ergebnisse aus der Datenbank. Der find Die Methode akzeptiert drei Parameter, nämlich die Abfrageklausel, die Projektklausel, dh welche Attribute aus der Sammlung abgerufen werden sollen, und die Sortierklausel. Der folgende Code ruft das Ergebnis ab und zeigt es an:

    var listBooks = function(db){
      db.collection(myCollection).find({},{},{}).toArray(
        function(err, docs){
          for(index in docs){
            console.log(docs[index]);
          }
          printMenu(dbConn);
        }
      );
    }
    

    Aktualisieren von Datensätzen in MongoDB in Node.js

    Um das Buch zu aktualisieren, müssen wir die ISBN-Nummer verwenden, um das Buch abzurufen und seine Daten zu aktualisieren. Außerdem nehmen wir Benutzereingaben für die neueren Daten entgegen und verwenden dementsprechend die MongoDB-API, um den Datensatz zu aktualisieren. Der folgende Code aktualisiert den Datensatz:

    var updateBook = function(db){
      rl.question("Enter the ISBN of the book you want to update: ", function(answer){
    
        db.collection(myCollection).find({isbn: answer},{},{}).toArray(
          function(err, docs){
            if ( docs.length == 0){
              console.log("Book with ISBN " + isbn + " not found");
              printMenu(dbConn);
            }else{
              rl.question("Enter the name of the book: ", function(bookName){
                   rl.question("Enter the authors of the book[Comma separated if more than 1]: ", function(author){
                     rl.question("Enter the total number of pages: ", function(pageCount){
                             db.collection(myCollection).update({"isbn":answer}, {
                                'name':bookName,
                                'author': author,
                                'pages': pageCount,
                                'isbn':answer
                              }, bookUpdateHandler);
                     });
                   });
              });
            }
          });
      });
    }
    

    Datensätze aus MongoDB in Node.js löschen

    Um den Datensatz zu löschen, nehmen wir die ISBN-Nummer des Buchs und verwenden die MongoDB-API um den Datensatz zu löschen. Der folgende Code führt den Vorgang aus.

    var deleteBook = function(db){
      rl.question("Enter the ISBN of the book you want to update: ", function(answer){
        db.collection(myCollection).find({isbn: answer},{},{}).toArray(
          function(err, docs){
            if ( docs.length == 0){
              console.log("Book with ISBN " + answer + " not found");
              printMenu(dbConn);
            }else{
              db.collection(myCollection).remove({"isbn":answer}, bookDeleteHandler);
            }
          });
      });
    }
    

    Node.js + MongoDB-Beispiel

    Das vollständige Beispielprogramm zur Demonstration von CRUD-Operationen Nodde.js- und MongoDB-Integrationsbeispiel ist unten angegeben.

    //Filename: crud.js
    var readline = require('readline');
    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    
    var MongoClient = require('mongodb').MongoClient;
    var dbHost="mongodb://localhost:27017/test";
    var myCollection = "crud";
    var dbConn;
    
    var bookInsertHandler = function(err, recs){
      if(err) throw err;
      console.log("Successfully inserted the book into database");
      printMenu(dbConn);
    }
    
    var bookUpdateHandler = function(err, recs){
      if(err) throw err;
      console.log("Successfully updated the book");
      printMenu(dbConn);
    }
    var bookDeleteHandler = function(err, recs){
      if(err) throw err;
      console.log("Successfully deleted the book");
      printMenu(dbConn);
    }
    var printMenu = function(db){
      console.log("Welcome to CRUD demo using Node.js and MongoDB");
      console.log("1. Insert a new Book");
      console.log("2. List all the books");
      console.log("3. Update the book by ISBN");
      console.log("4. Delete the book by ISBN");
      console.log("5. Quit");
      rl.question("Enter your choice: ", function(answer){
        console.log("Choice entered is: " + answer);
        switch(answer){
          case "1":
            insertBook(dbConn);
            break;
          case "2":
            listBooks(dbConn);
            break;
          case "3":
            updateBook(dbConn);
            break;
          case "4":
            deleteBook(dbConn);
            break;
          case "5":
            console.log("Press Ctrl+C to exit the program");
            return;
        }
    
      })
    }
    
    var insertBook = function(db){
      rl.question("Enter the name of the book: ", function(bookName){
         rl.question("Enter the ISBN of the book: ", function(isbn){
           rl.question("Enter the authors of the book[Comma separated if more than 1]: ", function(author){
             rl.question("Enter the total number of pages: ", function(pageCount){
               db.collection(myCollection).find({isbn: isbn},{},{}).toArray(
                 function(err, docs){
                   if ( docs.length > 0){
                     console.log("Book with ISBN " + isbn + " already exists");
                     printMenu(dbConn);
                   }else{
                     db.collection(myCollection).insert({
                        'name':bookName,
                        'isbn': isbn,
                        'author': author,
                        'pages': pageCount
                      }, bookInsertHandler);
                   }
                 }
               );
             });
           });
         });
      });
    }
    
    var listBooks = function(db){
      db.collection(myCollection).find({},{},{}).toArray(
        function(err, docs){
          for(index in docs){
            console.log(docs[index]);
          }
          printMenu(dbConn);
        }
      );
    }
    
    var updateBook = function(db){
      rl.question("Enter the ISBN of the book you want to update: ", function(answer){
    
        db.collection(myCollection).find({isbn: answer},{},{}).toArray(
          function(err, docs){
            if ( docs.length == 0){
              console.log("Book with ISBN " + isbn + " not found");
              printMenu(dbConn);
            }else{
              rl.question("Enter the name of the book: ", function(bookName){
                   rl.question("Enter the authors of the book[Comma separated if more than 1]: ", function(author){
                     rl.question("Enter the total number of pages: ", function(pageCount){
                             db.collection(myCollection).update({"isbn":answer}, {
                                'name':bookName,
                                'author': author,
                                'pages': pageCount,
                                'isbn':answer
                              }, bookUpdateHandler);
                     });
                   });
              });
            }
          });
      });
    }
    
    var deleteBook = function(db){
      rl.question("Enter the ISBN of the book you want to update: ", function(answer){
        db.collection(myCollection).find({isbn: answer},{},{}).toArray(
          function(err, docs){
            if ( docs.length == 0){
              console.log("Book with ISBN " + answer + " not found");
              printMenu(dbConn);
            }else{
              db.collection(myCollection).remove({"isbn":answer}, bookDeleteHandler);
            }
          });
      });
    }
    
    MongoClient.connect(dbHost, function(err, db){
      if ( err ) throw err;
      dbConn = db;
      printMenu();
    });
    

    Um den obigen Code auszuführen, verwenden Sie den folgenden Befehl: node crud.js

    Zusammenfassung

    • Node.js-Tutorials
    • MongoDB-Tutorials

    Dieses Tutorial führt Sie durch das Schreiben einfacher CRUD-Operationen mit der Kombination von Node.js- und MongoDB-Technologien. Diese beiden verwenden JSON als Datenformat, damit alles perfekt zusammenpasst. Ich hoffe, Sie haben eine gute Vorstellung davon, wie Sie mithilfe des Node.js-Skripts einen Datensatz in MongoDB erstellen, lesen, aktualisieren und löschen. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich. In meinem nächsten Artikel werde ich über MongoDB mit Mongoose API schreiben.

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    Nach oben scrollen