Menggunakan mongoskin untuk mengendalikan kejadian mongoDB dalam Node.js_node.js

WBOY
Lepaskan: 2016-05-16 16:35:10
asal
1640 orang telah melayarinya

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:

Salin kod Kod adalah seperti berikut:

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

(7) Adalah disyorkan untuk menukar port luaran
(8) Mulakan perkhidmatan (ini adalah under win, sedikit diubah suai di bawah Linux):
Salin kod Kod adalah seperti berikut:

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

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

Salin kod Kod adalah seperti berikut:

{
"dbname":"UJIAN",
"port": "7868",
"hos": "127.0.0.1",
"nama pengguna": "ujian",
"kata laluan": "ujian"
}

(2) Cipta kelas berkaitan util mongo.js: eksport objek DB

Salin kod Kod adalah seperti berikut:

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

/*
* @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

Salin kod Kod adalah seperti berikut:

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


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.

Code kopieren Der Code lautet wie folgt:

module.exports = {
/*
*Erfolgsstatus
*
* */
Erfolg: {
Status: 1,
         Nachricht: „OK“
},

/*
* 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“
}
};

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan