1. Mengarut
Sejak Januari 2013, saya telah didedahkan kepada mongodb untuk pembangunan dan membangunkan perkhidmatan tag perjalanan, sistem pengambilan tag Weibo, perkhidmatan peta dan perkhidmatan APP web... Senario penggunaan MongoDB telah dipindahkan daripada persekitaran .NET dan JAVA ke platform node.js . Saya semakin berasa bahawa gabungan Node.js dan mongodb terasa sangat baik. Rasanya mongodb dan node.js adalah padanan yang sempurna. Sesungguhnya, pelanggan mongodb ialah enjin parsing JS. Oleh itu, memilih mongodb dan node.js untuk prototaip produk juga merupakan pilihan yang sangat bagus. Di Internet, saya bertemu dengan netizen bertanya tentang pemandu mana yang terbaik untuk pembangunan mongodb Saya selalu menggunakan pemacu asli sebelum ini, tetapi terdapat banyak perkara yang perlu diberi perhatian semasa menulis kod, seperti operasi penutupan sambungan, dll. .. Oleh itu, dalam node.js Dalam persekitaran pembangunan, saya mengesyorkan menggunakan mongoskin.
2. Beberapa konsep yang perlu dibincangkan
(1) Pangkalan Data: Sama seperti pangkalan data hubungan.
(2) Set: Jadual dalam pangkalan data hubungan.
(3) Dokumen: Analogi dengan rekod dalam pangkalan data hubungan, tetapi sebenarnya objek JSON.
(4) Reka bentuk pangkalan data: Adalah disyorkan untuk mempertimbangkan reka bentuk NoSQL dan meninggalkan idea reka bentuk data hubungan sebenarnya, reka bentuk pangkalan data NoSQL adalah luas dan mendalam dan perlu diamalkan secara berterusan dalam projek.
(5) Sistem pengguna: Setiap pangkalan data mempunyai pentadbir sendiri, yang boleh:
3. Bina infrastruktur pembangunan mongodb
(0) npm pasang mongoskin Pasang mongoskin
Pemasangan, pakej dan mekanisme lain Node.js tidak diperkenalkan di sini.
(1) Cipta fail konfigurasi config.json
(2) Cipta kelas berkaitan util mongo.js: eksport objek DB
/*
* @des: Eksport modul sambungan pangkalan data
* */
module.exports = (function(){
var hos = config.host,
port = config.port,
dbName = nama konfigurasi.db,
Nama pengguna = nama pengguna konfigurasi,
Kata laluan = config.password,
str = 'mongodb://' Nama pengguna ':' kata laluan '@' hos ':' port '/' dbName;
pilihan var = {
native_parser: benar
};
kembalikan mongoskin.db(str, pilihan);
})();
(3) Bina kelas asas CRUD: Untuk mengurangkan kod CURD berulang, anda hanya perlu menghantar objek JSON yang berkaitan
var CRUD = fungsi(koleksi){
This.collection = koleksi;
db.bind(this.collection);
};
CRUD.prototype = {
/*
* @des: Cipta rekod
* @model: Rekod yang disisipkan, model dalam format JSON
* @callback: panggil balik, mengembalikan rekod yang berjaya dimasukkan atau maklumat kegagalan
*
* */
Cipta: fungsi(model, panggil balik){
db[this.collection].save(model, fungsi(err, item){
jika(err) {
panggil balik (status.fail);
}
Item.status = status.success.status;
Item.message = status.success.message;
kembalikan panggilan balik(item);
});
},
/*
* @des: Baca rekod
* @query: Syarat pertanyaan, literal JSON untuk pertanyaan Mongo
* @callback: panggil balik, mengembalikan rekod yang memenuhi keperluan atau maklumat kegagalan
*
* */
Baca: fungsi(pertanyaan, panggil balik){
db[this.collection].find(query).toArray(function(err, item){
jika(err){
panggil balik (status.fail);
}
var obj = {
status: status.success.status,
mesej: status.success.message,
item: item
};
kembalikan panggilan balik(obj);
});
},
/*
* @des: Kemas kini rekod
* @query: Keadaan pertanyaan, literal JSON untuk pertanyaan Mongo, berikut ialah _id
* @updateModel: Model dalam format JSON yang perlu dikemas kini
* @callback: Kembalikan maklumat kejayaan atau kegagalan
*
* */
Kemas kini: fungsi(pertanyaan, kemas kiniModel, panggil balik){
var set = {set: updateModel};
db[this.collection].kemas kini(pertanyaan, set, fungsi(err){
jika(err){
panggil balik (status.fail);
} lain{
panggil balik (status.success);
}
});
},
/*
* @des: Einen Datensatz löschen
* @query: Abfragebedingungen, JSON-Literal für Mongo-Abfrage
* @callback: Fehler- oder Erfolgsinformationen zurückgeben
*
* */
deleteData: function(query, callback){
db[this.collection].remove(query, function(err){
if(err){
return callback(status.fail);
}
return callback(status.success);
});
}
};
module.exports = CRUD;
(4) Erstellen Sie status.json, da ein Status erforderlich ist, um Erfolg und Misserfolg anzuzeigen, der später um Bestätigungscodefehler, SMS-Verifizierungsfehler, Benutzernamenfehler usw. erweitert werden kann.
/*
* Status „Fehlgeschlagen“
*
* */
fehlgeschlagen: {
Status: 0,
Meldung: „FEHLER“
},
/*
* Die doppelt eingegebenen Passwörter sind inkonsistent
* */
Wiederholungspasswort: {
Status: 0,
Meldung: „Die zweimal eingegebenen Passwörter sind inkonsistent“
}
};