1. ไร้สาระ
ตั้งแต่ฉันเข้ามาติดต่อกับ MongoDB ในเดือนมกราคม 2013 ฉันได้พัฒนาบริการแท็กการท่องเที่ยวระบบการดึงแท็ก Weibo บริการแผนที่และบริการเว็บแอพ ... สถานการณ์ที่ใช้ MongoDB ได้รับการถ่ายโอนจากสภาพแวดล้อม. NET และ Java ไปยังแพลตฟอร์ม Node.js ฉันรู้สึกมากขึ้นเรื่อย ๆ ว่า node.js และ mongoDB รวมกันเข้าด้วยกันเป็นอย่างดี รู้สึกเหมือน MongoDB และ Node.js เกิดมาพร้อมกับคู่ แท้จริงแล้วลูกค้าของ MongoDB คือเอ็นจิ้นการแยกวิเคราะห์ของ JS ดังนั้นการเลือก mongoDB และ node.js เป็นต้นแบบผลิตภัณฑ์จึงเป็นตัวเลือกที่ดีมาก บนอินเทอร์เน็ตฉันพบชาวเน็ตถามเกี่ยวกับการพัฒนาของ MongoDB ซึ่งเป็นตัวเลือกที่ดีที่สุด ฉันเคยใช้ไดรเวอร์พื้นเมือง แต่มีหลายสิ่งหลายอย่างที่ให้ความสนใจเมื่อเขียนโค้ดเช่นการดำเนินการปิดการเชื่อมต่อ ฯลฯ ดังนั้นในสภาพแวดล้อมการพัฒนา Node.js ฉันขอแนะนำให้ใช้ Mongoskin ที่นี่
2. แนวคิดหลายประการที่ต้องพูดถึง
(1) ฐานข้อมูล: เช่นเดียวกับฐานข้อมูลเชิงสัมพันธ์
(2) คอลเลกชัน: ตารางในฐานข้อมูลเชิงสัมพันธ์
(3) เอกสาร: บันทึกที่คล้ายกับฐานข้อมูลเชิงสัมพันธ์จริง ๆ แล้วเป็นวัตถุ JSON
(4) การออกแบบฐานข้อมูล: ขอแนะนำให้พิจารณาการออกแบบ NOSQL และละทิ้งแนวคิดการออกแบบของข้อมูลเชิงสัมพันธ์ ในความเป็นจริงการออกแบบฐานข้อมูล NOSQL นั้นลึกซึ้งและจำเป็นต้องได้รับการฝึกฝนอย่างต่อเนื่องในโครงการ
(5) ระบบผู้ใช้: แต่ละฐานข้อมูลมีผู้ดูแลระบบของตัวเองซึ่งสามารถ:
การคัดลอกรหัสมีดังนี้:
ใช้ dbname; db.adduser ('root_1', 'ทดสอบ');
(7) ขอแนะนำให้เปลี่ยนพอร์ตภายนอก
(8) เริ่มบริการ (นี่คือการแก้ไขเล็กน้อยภายใต้ Win และ Linux):
การคัดลอกรหัสมีดังนี้:
MongoD -dbpath "xx/mongoDB/data/db" -logpath "xx/mongoDB/log/mongo.log" -logappend -auth -พอร์ต 7868
3. สร้างโครงสร้างพื้นฐานการพัฒนา MongoDB
(0) NPM ติดตั้ง Mongoskin ติดตั้ง Mongoskin
การติดตั้ง Node.js แพคเกจและกลไกอื่น ๆ ไม่ได้ถูกนำมาใช้ที่นี่
(1) สร้างไฟล์กำหนดค่า config.json
การคัดลอกรหัสมีดังนี้:
-
"dbname": "ทดสอบ",
"พอร์ต": "7868"
"โฮสต์": "127.0.0.1"
"ชื่อผู้ใช้": "ทดสอบ",
"รหัสผ่าน": "ทดสอบ"
-
(2) สร้างคลาสที่เกี่ยวข้องกับ Util Mongo.js: ส่งออกวัตถุ db
การคัดลอกรหัสมีดังนี้:
var mongoskin = ต้องการ ('mongoskin')
config = ต้องการ ('./../ config.json');
-
* @DES: ส่งออกโมดูลการเชื่อมต่อฐานข้อมูล
-
module.exports = (function () {
var host = config.host,
พอร์ต = config.port
dbname = config.dbname
ชื่อผู้ใช้ = config.username
รหัสผ่าน = config.password
str = 'mongoDb: //' + ชื่อผู้ใช้ + ':' + รหัสผ่าน + '@' + โฮสต์ + ':' + พอร์ต + '/' + dbname;
ตัวเลือก var = {
Native_parser: จริง
-
ส่งคืน mongoskin.db (str, ตัวเลือก);
-
(3) สร้างคลาสพื้นฐานของ CRUD: เพื่อลดรหัสเต้าหู้ซ้ำคุณจะต้องส่งผ่านในวัตถุ JSON ที่เกี่ยวข้อง
การคัดลอกรหัสมีดังนี้:
var db = ต้องการ ('./ mongo.js')
สถานะ = ต้องการ ('./ สถานะ')
Mongoskin = ต้องการ ('Mongoskin');
var crud = function (คอลเลกชัน) {
this.collection = คอลเลกชัน;
db.bind (this.collection);
-
crud.prototype = {
-
* @DES: สร้างระเบียน
* @model: บันทึกแทรกโมเดลในรูปแบบ JSON
* @Callback: การโทรกลับ, ส่งคืนบันทึกการแทรกที่ประสบความสำเร็จหรือข้อมูลความล้มเหลว
-
-
สร้าง: ฟังก์ชั่น (โมเดลการโทรกลับ) {
db [this.collection] .save (โมเดล, ฟังก์ชัน (err, item) {
ถ้า (err) {
ส่งคืนการโทรกลับ (สถานะ. fail);
-
item.status = status.success.status;
item.message = status.success.message;
ส่งคืนการโทรกลับ (รายการ);
-
-
-
* @DES: อ่านบันทึก
* @Query: เงื่อนไขการสืบค้น, JSON ตัวอักษรของ Mongo Query
* @Callback: การโทรกลับ, ส่งคืนบันทึกที่ตรงตามข้อกำหนดหรือข้อมูลความล้มเหลว
-
-
อ่าน: ฟังก์ชั่น (คำถามการโทรกลับ) {
db [this.collection] .find (Query) .toArray (ฟังก์ชั่น (err, items) {
ถ้า (err) {
ส่งคืนการโทรกลับ (สถานะ. fail);
-
var obj = {
สถานะ: status.success.status,
ข้อความ: status.success.message,
รายการ: รายการ
-
ส่งคืนการโทรกลับ (OBJ);
-
-
-
* @DES: อัปเดตบันทึก
* @Query: เงื่อนไขการสืบค้น, JSON ตัวอักษรของ Mongo Query, นี่คือ _id
* @UpDateModel: โมเดลในรูปแบบ JSON ที่ต้องได้รับการอัปเดต
* @Callback: ส่งคืนข้อมูลความสำเร็จหรือความล้มเหลว
-
-
อัปเดต: ฟังก์ชั่น (แบบสอบถาม, updateModel, callback) {
var set = {set: updateModel};
db [this.collection] .UpDate (Query, Set, Function (ERR) {
ถ้า (err) {
ส่งคืนการโทรกลับ (สถานะ. fail);
}อื่น{
ส่งคืนการโทรกลับ (status.success);
-
-
-
-
* @DES: ลบบันทึก
* @Query: เงื่อนไขการสืบค้น, JSON ตัวอักษรของ Mongo Query
* @Callback: ส่งคืนข้อความของความล้มเหลวหรือความสำเร็จ
-
-
DELETEDATA: ฟังก์ชั่น (คำถามการโทรกลับ) {
db [this.collection] .remove (คำถาม, ฟังก์ชั่น (ERR) {
ถ้า (err) {
ส่งคืนการโทรกลับ (สถานะ. fail);
-
ส่งคืนการโทรกลับ (status.success);
-
-
-
module.exports = crud;
(4) build status.json เนื่องจากบางสถานะจำเป็นต้องระบุความสำเร็จและความล้มเหลวสามารถขยายไปสู่ข้อผิดพลาดของรหัสการตรวจสอบข้อผิดพลาดการตรวจสอบ SMS ข้อผิดพลาดชื่อผู้ใช้ ฯลฯ ในระยะต่อมา
การคัดลอกรหัสมีดังนี้:
module.exports = {
-
* สถานะความสำเร็จ
-
-
ความสำเร็จ: {
สถานะ: 1,
ข้อความ: 'ตกลง'
-
-
* สถานะล้มเหลว
-
-
ล้มเหลว: {
สถานะ: 0,
ข้อความ: 'ล้มเหลว'
-
-
* รหัสผ่านที่ป้อนสองครั้งนั้นไม่สอดคล้องกัน
-
RepeapPassword: {
สถานะ: 0,
ข้อความ: 'รหัสผ่านที่ป้อนสองครั้งนั้นไม่สอดคล้องกัน'
-
-