Heim  >  Artikel  >  Web-Frontend  >  Verwenden von Mongoskin zum Betreiben von MongoDB-Instanzen in Node.js_node.js

Verwenden von Mongoskin zum Betreiben von MongoDB-Instanzen in Node.js_node.js

WBOY
WBOYOriginal
2016-05-16 16:35:101638Durchsuche

1. Unsinn

Seit Januar 2013 bin ich für die Entwicklung mit Mongodb in Kontakt gekommen und habe Reise-Tag-Dienste, Weibo-Tag-Retrieval-Systeme, Kartendienste und Web-APP-Dienste entwickelt ... Das Szenario der Verwendung von MongoDB wurde aus .NET- und JAVA-Umgebungen übertragen zur node.js-Plattform. Ich habe immer mehr das Gefühl, dass sich die Kombination von Node.js und Mongodb sehr gut anfühlt. Es fühlt sich an, als ob Mongodb und Node.js perfekt zusammenpassen. Tatsächlich ist der Client von Mongodb die Parsing-Engine von JS. Daher ist die Wahl von Mongodb und Node.js für Produktprototypen auch eine sehr gute Wahl. Im Internet traf ich Internetnutzer, die fragten, welcher Treiber für die Mongodb-Entwicklung am besten geeignet sei. Ich habe bisher immer den nativen Treiber verwendet, aber beim Schreiben von Code gibt es viele Dinge zu beachten, wie z. B. das Schließen der Verbindung usw. .. Deshalb in node.js In der Entwicklungsumgebung empfehle ich die Verwendung von Mongoskin.

2. Mehrere Konzepte, die besprochen werden müssen

(1) Datenbank: Identisch mit relationaler Datenbank.
(2) Satz: Tabelle in einer relationalen Datenbank.
(3) Dokument: Analog zu Datensätzen in einer relationalen Datenbank, aber tatsächlich ein JSON-Objekt.
(4) Datenbankdesign: Es wird empfohlen, das NoSQL-Design in Betracht zu ziehen und die Designideen relationaler Daten aufzugeben. Tatsächlich ist das NoSQL-Datenbankdesign umfassend und tiefgreifend und muss in Projekten kontinuierlich geübt werden.
(5) Benutzersystem: Jede Datenbank hat ihren eigenen Administrator, der:

Code kopieren Der Code lautet wie folgt:

use dbname; db.addUser('root_1' , 'test');

(7) Es wird empfohlen, den externen Port zu ändern
(8) Starten Sie den Dienst (unter Win, leicht modifiziert unter Linux):
Code kopieren Der Code lautet wie folgt:

mongod --dbpath "XXMongoDBdatadb" --logpath "XXMongoDBlogmongo.log" --logappend -auth --port 7868

3. Bauen Sie eine Mongodb-Entwicklungsinfrastruktur auf

(0) npm install mongoskin Mongoskin installieren

Die Installation, das Paket und andere Mechanismen von Node.js werden hier nicht vorgestellt.

(1) Erstellen Sie die Konfigurationsdatei config.json

Code kopieren Der Code lautet wie folgt:

{
„dbname“: „TEST“,
„port“: „7868“,
„host“: „127.0.0.1“,
„Benutzername“: „test“,
„Passwort“: „Test“
}

(2) Erstellen Sie eine Util-bezogene Klasse mongo.js: Exportieren Sie ein DB-Objekt

Code kopieren Der Code lautet wie folgt:

var mongoskin = require('mongoskin'),
config = require('./../config.json');

/*
* @des: Datenbankverbindungsmodul exportieren
* */
module.exports = (function(){
var host = config.host,
         port = config.port,
        dbName = config.dbname,
         userName = config.username,
Passwort = config.password,
           str = 'mongodb://' userName ':' Passwort '@' host ':' port '/' dbName;

var option = {
         native_parser: true
};

return mongoskin.db(str, option);
})();

(3) Erstellen Sie die Basisklasse von CRUD: Um wiederholten CURD-Code zu reduzieren, müssen Sie nur das relevante JSON-Objekt

übergeben

Code kopieren Der Code lautet wie folgt:

var db = require('./mongo.js'),
Status = require('./status'),
mongoskin = require('mongoskin');


var CRUD = function(collection){
This.collection = Sammlung;
db.bind(this.collection);
};

CRUD.prototype = {
/*
* @des: Erstellen Sie einen Datensatz
* @model: Eingefügter Datensatz, Modell im JSON-Format
* @callback: Rückruf, gibt erfolgreich eingefügte Datensätze oder Fehlerinformationen zurück
*
* */
Erstellen: Funktion(Modell, Rückruf){
        db[this.collection].save(model, function(err, item){
               if(err) {
                    return callback(status.fail);
            }
Item.status = status.success.status;
Item.message = status.success.message;
              Rückruf (Artikel);
});
},

/*
* @des: Einen Datensatz lesen
* @query: Abfragebedingungen, JSON-Literal für Mongo-Abfrage
* @callback: Rückruf, gibt Datensätze zurück, die den Anforderungen entsprechen, oder Fehlerinformationen
*
* */
Lesen: Funktion(Abfrage, Rückruf){
        db[this.collection].find(query).toArray(function(err, items){
               if(err){
                    return callback(status.fail);
            }
            var obj = {
Status: status.success.status,
                     Nachricht: status.success.message,
Artikel: Artikel
            };

Rückruf zurück(obj);
});
},
/*
* @des: Einen Datensatz aktualisieren
* @query: Abfragebedingung, JSON-Literal für Mongo-Abfrage, hier ist _id
* @updateModel: Modell im JSON-Format, das aktualisiert werden muss
* @callback: Erfolgs- oder Fehlerinformationen zurückgeben
*
* */
Update: function(query, updateModel, callback){
        var set = {set: updateModel};
        db[this.collection].update(query, set, function(err){
               if(err){
                    return callback(status.fail);
               }sonst{
                   return callback(status.success);
            }
});
},

/*
* @des : Supprimer un enregistrement
* @query : conditions de requête, littéral JSON pour la requête Mongo
* @callback : renvoie les informations d'échec ou de réussite
*
* */
​ deleteData : fonction (requête, rappel){
        db[this.collection].remove(query, function(err){
               si(erreur){
                    return callback(status.fail);
            }
               return callback(status.success);
});
>
};


module.exports = CRUD;

(4) Créez status.json, car un certain statut est nécessaire pour indiquer le succès et l'échec, qui peut ensuite être étendu pour inclure les erreurs de code de vérification, les erreurs de vérification par SMS, les erreurs de nom d'utilisateur, etc.

Copier le code Le code est le suivant :

module.exports = {
/*
*Statut de réussite
*
* */
Succès : {
statut : 1,
        message : 'OK'
},

/*
* Statut d'échec
*
* */
​​échouer : {
statut : 0,
         message : 'ÉCHEC'
},

/*
* Les mots de passe saisis deux fois sont incohérents
* */
Répéter le mot de passe : {
statut : 0,
​​​​​ message : 'Les mots de passe saisis deux fois sont incohérents'
>
};

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn