1. Omong kosong
Sejak saya melakukan kontak dengan MongoDB pada Januari 2013, saya telah mengembangkan layanan tag perjalanan, sistem pengambilan tag Weibo, layanan peta, dan layanan aplikasi web ... skenario menggunakan MongoDB telah ditransfer dari lingkungan .NET dan Java ke platform Node.js. Saya merasa semakin banyak bahwa Node.js dan MongoDB dikombinasikan satu sama lain dengan sangat baik. Rasanya seperti MongoDB dan Node.js dilahirkan dengan sepasang. Memang, klien MongoDB adalah mesin parsing JS. Oleh karena itu, memilih MongoDB dan Node.js sebagai prototipe produk juga merupakan pilihan yang sangat bagus. Di internet, saya bertemu dengan netizen yang menanyakan tentang pengembangan MongoDB, pengemudi mana yang merupakan pilihan terbaik. Saya dulu menggunakan driver asli, tetapi ada banyak hal yang harus diperhatikan saat menulis kode, seperti operasi penutupan koneksi, dll. Oleh karena itu, di lingkungan pengembangan Node.js, saya sarankan menggunakan Mongoskin di sini.
2. Beberapa konsep yang perlu dibahas
(1) Database: Sama seperti database relasional.
(2) Koleksi: Tabel dalam database relasional.
(3) Dokumen: Catatan yang mirip dengan database relasional sebenarnya adalah objek JSON.
(4) Desain Basis Data: Disarankan untuk mempertimbangkan desain NoSQL dan meninggalkan ide desain data relasional; Faktanya, desain database NoSQL sangat mendalam dan perlu terus dipraktikkan dalam proyek.
(5) Sistem Pengguna: Setiap basis data memiliki administrator sendiri, yang dapat:
Salinan kode adalah sebagai berikut:
Gunakan DBNAME; db.adduser ('root_1', 'test');
(7) Disarankan untuk mengubah port eksternal
(8) Mulai Layanan (ini sedikit dimodifikasi di bawah Win dan Linux):
Salinan kode adalah sebagai berikut:
mongod --dbpath "xx/mongodb/data/db" --gogpath "xx/mongodb/log/mongo.log" --gogappend -auth --port 7868
3. Bangun infrastruktur pembangunan mongodb
(0) NPM Instal Mongoskin Instal Mongoskin
Instalasi Node.js, paket dan mekanisme lainnya tidak diperkenalkan di sini.
(1) Buat konfigurasi file config.json
Salinan kode adalah sebagai berikut:
{
"dbname": "tes",
"port": "7868",
"Host": "127.0.0.1",
"Nama pengguna": "tes",
"Kata Sandi": "Tes"
}
(2) Buat Mongo.js kelas terkait util: Ekspor objek DB
Salinan kode adalah sebagai berikut:
var mongoskin = membutuhkan ('mongoskin'),
config = membutuhkan ('./../ config.json');
/*
* @des: Ekspor modul koneksi database
* *//
module.exports = (function () {
var host = config.host,
port = config.port,
dbname = config.dbname,
nama pengguna = config.username,
kata sandi = config.password,
str = 'mongoDb: //' + nama pengguna + ':' + kata sandi + '@' + host + ':' + port + '/' + dbname;
var option = {
Native_parser: Benar
};
return mongoskin.db (str, opsi);
}) ();
(3) Bangun kelas dasar CRUD: Untuk mengurangi kode dadih duplikat, Anda hanya perlu meneruskan objek JSON yang relevan.
Salinan kode adalah sebagai berikut:
var db = membutuhkan ('./ mongo.js'),
status = membutuhkan ('./ Status'),
Mongoskin = membutuhkan ('Mongoskin');
var crud = function (collection) {
this.collection = collection;
db.bind (this.collection);
};
Crud.prototype = {
/*
* @des: Buat catatan
* @Model: Catatan yang dimasukkan, model dalam format JSON
* @callback: Callback, kembalikan catatan informasi penyisipan atau kegagalan yang berhasil
*
* *//
buat: function (model, callback) {
db [this.collection] .save (model, function (err, item) {
if (err) {
return callback (status.fail);
}
item.status = status.success.status;
item.message = status.success.message;
return callback (item);
});
},
/*
* @des: Baca catatan
* @Query: Kondisi kueri, json literal dari kueri Mongo
* @callback: panggilan balik, kembalikan catatan yang memenuhi persyaratan atau informasi kegagalan
*
* *//
baca: function (kueri, callback) {
db [this.collection] .find (kueri) .toArray (function (err, item) {
if (err) {
return callback (status.fail);
}
var obj = {
Status: status.success.status,
Pesan: status.success.message,
Item: Item
};
return callback (OBJ);
});
},
/*
* @des: Perbarui catatan
* @Query: Kondisi kueri, json literal dari kueri mongo, ini _id
* @upDateModel: Model dalam format JSON yang perlu diperbarui
* @callback: Mengembalikan informasi keberhasilan atau kegagalan
*
* *//
UPDATE: function (kueri, updateModel, callback) {
var set = {set: updateModel};
db [this.collection] .update (kueri, set, fungsi (err) {
if (err) {
return callback (status.fail);
}kalau tidak{
return callback (status.success);
}
});
},
/*
* @des: Hapus catatan
* @Query: Kondisi kueri, json literal dari kueri Mongo
* @callback: Mengembalikan pesan kegagalan atau kesuksesan
*
* *//
deletedata: function (kueri, callback) {
db [this.collection] .remove (kueri, fungsi (err) {
if (err) {
return callback (status.fail);
}
return callback (status.success);
});
}
};
module.Exports = crud;
(4) Bangun status.json, karena beberapa status diharuskan untuk menunjukkan keberhasilan dan kegagalan, dapat diperluas ke kesalahan kode verifikasi, kesalahan verifikasi SMS, kesalahan nama pengguna, dll. Pada tahap selanjutnya.
Salinan kode adalah sebagai berikut:
module.exports = {
/*
* Status Sukses
*
* *//
kesuksesan: {
Status: 1,
Pesan: 'Ok'
},
/*
* Status gagal
*
* *//
Gagal: {
Status: 0,
Pesan: 'Gagal'
},
/*
* Kata sandi yang dimasukkan dua kali tidak konsisten
* *//
REURTPASSWORD: {
Status: 0,
Pesan: 'Kata sandi yang dimasukkan dua kali tidak konsisten'
}
};