12/08/2018, 17:26

Mongoose cho MongoDB, Nodejs

Mongoose là một thư viện mô hình hóa đối tượng (Object Data Model - ODM) cho MongoDB và Node.js. Nó quản lý mối quan hệ giữa dữ liệu, cung cấp sự xác nhận giản đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn các đối tượng trong MongoDB. MongoDB là một cơ sở dữ liệu NoSQL. ...

Mongoose là một thư viện mô hình hóa đối tượng (Object Data Model - ODM) cho MongoDB và Node.js. Nó quản lý mối quan hệ giữa dữ liệu, cung cấp sự xác nhận giản đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn các đối tượng trong MongoDB.

MongoDB là một cơ sở dữ liệu NoSQL. Bạn có thể lưu trữ các JSON trong đó, và cấu trúc của các tài liệu này có thể thay đổi vì nó không bắt buộc như các cơ sở dữ liệu SQL. Đây là một trong những lợi thế của việc sử dụng NoSQL vì nó tăng tốc độ phát triển ứng dụng và giảm sự phức tạp của việc triển khai.

Dưới đây là ví dụ về cách dữ liệu được lưu giữ trong cơ sở dữ liệu Mongo vs. SQL:

Thuật ngữ - Terminologies

Collections

Collections ở Mongo tương đương với các bảng trong các cơ sở dữ liệu quan hệ. Chúng có thể chứa nhiều tài liệu JSON.

Documents

'Documents' tương đương với các bản ghi trong SQL. Mặc dù một dòng SQL có thể tham khảo dữ liệu trong các bảng khác, các tài liệu Mongo thường kết hợp trong một tài liệu.

Fields

'Fields' thuộc tính tương tự như các cột trong một bảng SQL.

Schema

Trong khi Mongo là schema-less, SQL định nghĩa một lược đồ thông qua định nghĩa bảng. Một lược đồ Mongoose là một lớp cấu trúc dữ liệu được thi hành qua lớp ứng dụng.

Fields

'Models' là mô hình bậc cao có một lược đồ và tạo ra một thể hiện của một tài liệu tương đương với các bản ghi trong một cơ sở dữ liệu quan hệ.

Cài đặt Mongo

Schema Trong khi Mongo là schema-less, SQL định nghĩa một lược đồ thông qua định nghĩa bảng. Một lược đồ Mongoose 'là một cấu trúc dữ liệu tài liệu (hoặc hình dạng của tài liệu) được thi hành qua lớp ứng dụng.

Cài đặt MongoDB thích hợp cho Hệ điều hành của bạn từ Website MongoDB https://docs.mongodb.com/manual/installation/ và làm theo hướng dẫn cài đặt

  • Tạo đăng ký cơ sở dữ liệu sandbox miễn phí trên mLab
  • Cài đặt Mongo bằng Docker nếu bạn sử dụng docker Hãy điều hướng qua một số vấn đề cơ bản của Mongoose bằng cách triển khai mô hình dữ liệu cho một sổ địa chỉ đơn giản.

Cài đặt NPM Chúng ta hãy vào thư mục dự án và khởi tạo dự án của chúng ta

npm init -y

Cài đặt Mongoose và một thư viện xác nhận với lệnh sau:

npm install mongoose validator

Lệnh cài đặt trên sẽ cài đặt phiên bản mới nhất của thư viện. Cú pháp Mongoose trong bài báo này đặc trưng cho Mongoose v5 và hơn thế nữa.

Kết nối cơ sở dữ liệu Tạo tệp ./src/database.js trong thư mục gốc của dự án.

Tiếp theo, chúng ta sẽ tạo thêm một một phương thức kết nối với cơ sở dữ liệu.

Kết nối sẽ thay đổi tùy theo cài đặt của bạn.

let mongoose = require('mongoose');

const server = '127.0.0.1:27017'; // REPLACE WITH YOUR DB SERVER
const database = 'fcc-Mail'; // REPLACE WITH YOUR DB NAME

class Database {
  constructor() {
    this._connect()
  }
_connect() {
     mongoose.connect(`mongodb://${server}/${database}`)
       .then(() => {
         console.log('Database connection successful')
       })
       .catch(err => {
         console.error('Database connection error')
       })
  }
}

module.exports = new Database()

Lệnh yêu cầu ('mongoose') trả về phía trên trả về một đối tượng Singleton. Điều này có nghĩa là lần đầu tiên bạn gọi ("mongoose"), nó tạo ra một lớp Mongoose và trả lại . Trong các cuộc gọi tiếp theo, nó sẽ trả lại cùng một cá thể đã được tạo và trả lại cho bạn lần đầu tiên vì cách nhập / xuất mô-đun trong ES6.

Tương tự như vậy, chúng ta đã chuyển lớp Cơ sở dữ liệu của chúng ta thành một singleton bằng cách trả lại một thể hiện của lớp trong module.exports vì chúng ta chỉ cần một kết nối duy nhất với cơ sở dữ liệu.

ES6 làm cho chúng ta dễ dàng tạo mẫu singleton (ví dụ đơn) vì mô-đun hoạt động như thế nào bằng cách lưu trữ các phản hồi của một tệp tin được nhập trước đó.

Mongoose Schema vs. Model

Mongoose model bao gồm Mongoose schema. Mongoose schema xác định cấu trúc của tài liệu, các giá trị mặc định, xác nhận. trong khi Mongoose model cung cấp một giao diện cho cơ sở dữ liệu để tạo, truy vấn, cập nhật, xoá các bản ghi.

Tạo ra một mô hình Mongoose model bao gồm chủ yếu là ba phần:

  1. Tham khảo Mongoose let mongoose = require('mongoose')

0