Heim > Artikel > Web-Frontend > Verwenden von Mongoskin zum Betreiben von MongoDB-Instanzen in Node.js_node.js
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:
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
(2) Erstellen Sie eine Util-bezogene Klasse mongo.js: Exportieren Sie ein DB-Objekt
/*
* @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
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.
/*
* 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'
>
};