1. Unsinn
Seit ich im Januar 2013 mit MongoDB in Kontakt gekommen bin, habe ich Travel Tag Services, Weibo Tag Abruf System, MAP -Dienste und Web -App -Dienste entwickelt ... Die Szenarien, die MongoDB verwenden, wurden von der .NET- und Java -Umgebung auf die Node.js -Plattform übertragen. Ich fühle immer mehr, dass Node.js und MongoDB sehr gut miteinander kombiniert werden. Es fühlt sich an, als würden MongoDB und Node.js mit einem Paar geboren. In der Tat ist der Kunde von MongoDB JS 'Parsing Engine. Daher ist die Auswahl von MongoDB und Node.js als Produktprototypen auch eine sehr schöne Wahl. Im Internet begegnete ich Internetnutzer, die nach der Entwicklung von MongoDB fragten, welcher Treiber die beste Wahl ist. Früher habe ich native Treiber verwendet, aber es gibt viele Dinge, auf die ich beim Schreiben von Code wie den Verbindungsabschlussbetrieb usw. berücksichtigt habe. Daher empfehle ich hier in der Node.js -Entwicklungsumgebung.
2. Mehrere Konzepte, die diskutiert werden müssen
(1) Datenbank: Das Gleiche wie die relationale Datenbank.
(2) Sammlung: Tabellen in der relationalen Datenbank.
(3) Dokument: Ein Datensatz, das der relationalen Datenbank ähnelt, ist eigentlich ein JSON -Objekt.
(4) Datenbankdesign: Es wird empfohlen, das NOSQL -Design zu berücksichtigen und die Designidee von relationalen Daten aufzugeben. Tatsächlich ist das NoSQL -Datenbankdesign tiefgreifend und muss im Projekt kontinuierlich praktiziert werden.
(5) Benutzersystem: Jede Datenbank verfügt über einen eigenen Administrator, der:
Die Codekopie lautet wie folgt:
DBNAME verwenden; db.adduser ('root_1', 'test');
(7) Es wird empfohlen, den externen Port zu ändern
(8) Starten Sie den Dienst (dies ist ein wenig unter Win und Linux geändert):
Die Codekopie lautet wie folgt:
Mongod - -dbPath "xx/mongoDB/data/db" - -logpath "xx/mongoDB/log/mongo.log" - -logAppend -Auth -Port 7868
3.. Bauen Sie die MongoDB -Entwicklungsinfrastruktur auf
(0) NPM installieren Mongoskin Installation Mongoskin
Node.js Installation, Paket und andere Mechanismen werden hier nicht eingeführt.
(1) Konfigurationsdatei config.json erstellen
Die Codekopie lautet wie folgt:
{
"dbname": "test",
"Port": "7868",
"Host": "127.0.0.1",
"Benutzername": "Test",
"Passwort": "Test"
}
(2) Erstellen Sie utilbezogene Klassenmongo.js: Exportieren Sie ein DB-Objekt
Die Codekopie lautet wie folgt:
var mongoskin = erfordern ('mongoskin'),
config = required ('./../ config.json');
/*
* @DES: Exportieren Sie das Datenbankverbindungsmodul
* *//
module.exports = (function () {
var host = config.host,
port = config.port,
dbname = config.dbname,
userername = config.username,
password = config.password,
str = 'mongoDB: //' + userername + ':' + password + '@' + host + ':' + port + '/' + dbname;
var option = {
native_parser: true
};
return mongoskin.db (str, option);
}) ();
(3) Erstellen Sie die grundlegende CRUD -Klasse: Um den doppelten Quarkcode zu reduzieren, müssen Sie nur das entsprechende JSON -Objekt übergeben.
Die Codekopie lautet wie folgt:
var db = require ('./ mongo.js'),
Status = fordert ('./ Status'),
mongoskin = erfordern ('mongoskin');
var crud = Funktion (Sammlung) {
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, geben Sie die Aufzeichnung erfolgreicher Einfügen oder Fehlerinformationen zurück
*
* *//
Erstellen: Funktion (Modell, Rückruf) {
DB [this.collection] .save (Modell, Funktion (Err, Element) {
if (err) {
Rückruf zurückgeben (Status.Fail);
}
item.status = status.success.status;
item.message = status.success.message;
Rückruf (Element) zurückgeben;
});
},
/*
* @des: Lesen Sie einen Datensatz
* @Query: Abfragebedingungen, Json Literal von Mongo Query
* @callback: Rückruf, Rückgaben zurück, die den Anforderungen oder Fehlerinformationen entsprechen
*
* *//
Lesen Sie: Funktion (Abfrage, Rückruf) {
DB [this.collection] .find (Abfrage) .toArray (Funktion (Err, Elemente) {
if (err) {
Rückruf zurückgeben (Status.Fail);
}
var obj = {
Status: Status.Success.status,
Nachricht: Status.Success.Message,
Artikel: Artikel
};
Rückruf zurückgeben (OBJ);
});
},
/*
* @des: Aktualisieren Sie einen Datensatz
* @Query: Abfragebedingungen, Json Literal von Mongo Query, hier ist _id
* @UpDateModel: Modell im JSON -Format, das aktualisiert werden muss
* @callback: Gibt Erfolgs- oder Misserfolgsinformationen zurück
*
* *//
Update: Funktion (Abfrage, UpdateModel, Rückruf) {
var set = {set: updatemodel};
DB [this.collection] .Update (Abfrage, festgelegt, Funktion (err) {
if (err) {
Rückruf zurückgeben (Status.Fail);
}anders{
Rückruf zurückgeben (Status.Success);
}
});
},
/*
* @des: Löschen Sie einen Datensatz
* @Query: Abfragebedingungen, Json Literal von Mongo Query
* @callback: Gibt die Meldung des Fehlers oder des Erfolgs zurück
*
* *//
Deletedata: Funktion (Abfrage, Rückruf) {
db [this.collection] .remove (Abfrage, Funktion (err) {
if (err) {
Rückruf zurückgeben (Status.Fail);
}
Rückruf zurückgeben (Status.Success);
});
}
};
module.exports = crud;
(4) Build status.json, da einige Status erforderlich sind, um Erfolg und Misserfolg anzuzeigen, kann er in der späteren Phase auf Überprüfungscodefehler, SMS -Überprüfungsfehler, Benutzernamefehler usw. erweitert werden.
Die Codekopie lautet wie folgt:
module.exports = {
/*
* Erfolgsstatus
*
* *//
Erfolg: {
Status: 1,
Nachricht: 'OK'
},
/*
* Fehlgeschlagener Status
*
* *//
Scheitern: {
Status: 0,
Nachricht: 'Fail'
},
/*
* Das zweimal eingegebene Passwort ist inkonsistent
* *//
Wiederholungspasswort: {
Status: 0,
Nachricht: 'Die zweimal eingegebenen Passwörter sind inkonsistent'
}
};