Thư viện nào được sử dụng để đọc và ghi vào cơ sở dữ liệu MongoDB từ nodejs
Trong thế giới của các ứng dụng cộng tác và xã hội ngày nay, điều quan trọng là phải có một chương trình phụ trợ đơn giản để xây dựng và dễ triển khai. Nhiều tổ chức dựa vào ngăn xếp ứng dụng bằng ba công nghệ sau Show
Ngăn xếp này khá phổ biến đối với các ứng dụng dành cho thiết bị di động vì định dạng dữ liệu gốc là JSON, có thể dễ dàng phân tích cú pháp bởi các ứng dụng thông qua lớp mkdir ~/Documents/NodeTutorial1 của Cocoa hoặc các trình phân tích cú pháp tương đương khác Trong hướng dẫn này, bạn sẽ học cách thiết lập một Nút. js tận dụng Express; Cơ sở dữ liệu phụ trợ được hiển thị trong bảng HTML Phần thứ hai của loạt bài hướng dẫn này tập trung vào khía cạnh ứng dụng iOS. Bạn sẽ xây dựng một ứng dụng “địa điểm ưa thích” thú vị để gắn thẻ các địa điểm thú vị để những người dùng khác có thể tìm ra những điều thú vị gần họ. Đây là một cái nhìn lén lút về những gì bạn sẽ xây dựng Hướng dẫn này giả định rằng bạn đã biết kiến thức cơ bản về JavaScript và phát triển web nhưng chưa quen với Node. js, Express và MongoDB Trường hợp cho Nút + MongoHầu hết các nhà phát triển Objective-C có thể không quen thuộc với JavaScript, nhưng đó là ngôn ngữ cực kỳ phổ biến trong số các nhà phát triển web. Vì lý do này, Node đã trở nên phổ biến như một web framework, nhưng còn nhiều lý do nữa khiến nó trở thành một lựa chọn tuyệt vời như một dịch vụ back-end
Mô hình lập trình sự kiện và lệnh gọi lại không đồng bộ rất phù hợp với máy chủ phải chờ nhiều thứ, chẳng hạn như yêu cầu đến và liên lạc giữa các quá trình với các dịch vụ khác (như MongoDB) MongoDB là một cơ sở dữ liệu chi phí thấp, trong đó tất cả các thực thể đều là BSON dạng tự do - “JSON nhị phân” - tài liệu. Điều này cho phép bạn làm việc với dữ liệu không đồng nhất và giúp dễ dàng xử lý nhiều định dạng dữ liệu khác nhau. Vì BSON tương thích với JSON, nên việc xây dựng API REST rất đơn giản — mã máy chủ có thể chuyển yêu cầu tới trình điều khiển cơ sở dữ liệu mà không cần nhiều xử lý trung gian Node và MongoDB vốn có khả năng mở rộng và đồng bộ hóa dễ dàng trên nhiều máy trong một mô hình phân tán; Bắt đầuHướng dẫn này giả định rằng bạn đã cài đặt OS X Mountain Lion hoặc Mavericks và Xcode với các công cụ dòng lệnh của nó Bước đầu tiên là cài đặt Homebrew. Giống như CocoaPods quản lý các gói cho Cocoa và Gem quản lý các gói cho Ruby, Homebrew quản lý các công cụ Unix trên Mac OS X. Nó được xây dựng dựa trên Ruby và Git, rất linh hoạt và có thể tùy chỉnh Nếu bạn đã cài đặt Homebrew, vui lòng chuyển sang bước tiếp theo. Nếu không, hãy cài đặt Homebrew bằng cách mở Terminal và thực hiện lệnh sau ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" Ghi chú. mkdir ~/Documents/NodeTutorial2 là một công cụ hữu ích để gửi và nhận tệp và dữ liệu bằng các yêu cầu URL. Bạn sử dụng nó ở đây để tải tập lệnh cài đặt Homebrew — sau này trong hướng dẫn này, bạn sẽ sử dụng nó để tương tác với máy chủ Node Khi Homebrew được cài đặt, hãy nhập lệnh sau vào Terminal brew update Điều này chỉ đơn giản là cập nhật Homebrew để bạn có danh sách gói cập nhật nhất Bây giờ, hãy cài đặt MongoDB qua Homebrew bằng lệnh sau brew install mongodb Ghi lại thư mục nơi MongoDB được cài đặt như được hiển thị trong đầu ra “Tóm tắt”. Bạn sẽ cần điều này sau để khởi chạy dịch vụ MongoDB Tải xuống và chạy Nút. trình cài đặt js từ http. //nodejs. tổ chức/tải xuống/ Khi trình cài đặt đã hoàn tất, bạn có thể kiểm tra Node của mình. cài js ngay Nhập lệnh sau vào Terminal node Điều này đưa bạn vào Nút. js môi trường tương tác nơi bạn có thể thực thi các biểu thức JavaScript Nhập biểu thức sau tại dấu nhắc console.log("Hello World"); Bạn sẽ nhận được đầu ra sau Hello World undefined mkdir ~/Documents/NodeTutorial3 là nút. js tương đương với mkdir ~/Documents/NodeTutorial4. Tuy nhiên, luồng đầu ra của mkdir ~/Documents/NodeTutorial5 phức tạp hơn nhiều so với mkdir ~/Documents/NodeTutorial4. nó có mkdir ~/Documents/NodeTutorial7, mkdir ~/Documents/NodeTutorial8, mkdir ~/Documents/NodeTutorial9 trong số các luồng khác mà bạn có thể mong đợi từ các trình ghi nhật ký cao cấp hơn như CocoaLumberjack Giá trị “không xác định” được ghi vào đầu ra là giá trị trả về của mkdir ~/Documents/NodeTutorial3 — không có giá trị trả về. Nút. js luôn hiển thị đầu ra của tất cả các biểu thức, cho dù giá trị trả về có được xác định hay không Ghi chú. Nếu bạn đã từng làm việc với JavaScript trước đây, bạn cần lưu ý rằng có một số điểm khác biệt giữa Node. môi trường js và môi trường trình duyệt. Đối tượng toàn cầu được gọi là ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"61 thay vì ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"62. Gõ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"61 và nhấn enter tại Nút. js dấu nhắc tương tác hiển thị tất cả các phương thức và đối tượng trong không gian tên chung; . js làm tài liệu tham khảo. . ] Đối tượng ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"61 có tất cả các hằng số, hàm và kiểu dữ liệu được xác định trước có sẵn cho các chương trình chạy trong Nút. môi trường js. Mọi biến do người dùng tạo cũng được thêm vào đối tượng ngữ cảnh chung. Đầu ra của ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"61 sẽ liệt kê khá nhiều thứ có thể truy cập được trong bộ nhớ Chạy một nút. tập lệnh jsMôi trường tương tác của Node. js rất tuyệt để thử và gỡ lỗi các biểu thức JavaScript của bạn, nhưng thông thường bạn sẽ sử dụng các tệp tập lệnh để hoàn thành công việc thực sự. Giống như một ứng dụng iOS bao gồm Chính. m làm điểm bắt đầu, điểm vào mặc định cho Nút. js là chỉ mục. js. Tuy nhiên, không giống như Objective-C, không có chức năng ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"66; . js được đánh giá từ trên xuống dưới Nhấn Control+C hai lần để thoát khỏi Nút. vỏ js. Thực hiện lệnh sau để tạo một thư mục mới để chứa tập lệnh của bạn mkdir ~/Documents/NodeTutorial Bây giờ hãy thực hiện lệnh sau để điều hướng vào thư mục mới này và tạo một tệp tập lệnh mới trong trình soạn thảo văn bản mặc định của bạn ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"6 Thêm đoạn mã sau vào chỉ mục. js mkdir ~/Documents/NodeTutorial4 Lưu công việc của bạn, quay lại Terminal và thực hiện lệnh sau để xem tập lệnh của bạn đang hoạt động mkdir ~/Documents/NodeTutorial5 Một lần nữa, có đầu ra “Xin chào thế giới” quen thuộc. Bạn cũng có thể thực thi ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"67 để chạy tập lệnh của mình, vì ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"68 tìm kiếm chỉ mục. js theo mặc định Phải thừa nhận rằng, tập lệnh “hello world” không phải do máy chủ tạo ra, nhưng đó là cách nhanh chóng để kiểm tra cài đặt của bạn. Phần tiếp theo giới thiệu với bạn về thế giới của Node. js sẽ tạo thành nền tảng cho máy chủ web mới sáng bóng của bạn Gói nútNút. js được chia thành các gói, là các “khung” của Node. thế giới js. Nút. js đi kèm với một số gói cơ bản và mạnh mẽ, nhưng có hơn 50.000 gói công khai được cung cấp bởi cộng đồng nhà phát triển năng động — và nếu bạn không thể tìm thấy thứ mình cần, bạn có thể dễ dàng tạo gói của riêng mình Thay thế nội dung của chỉ mục. js với đoạn mã sau brew update0 Lần lượt lấy từng bình luận được đánh số, bạn sẽ thấy như sau
Một trong những thế mạnh lớn nhất của Node. js với tư cách là môi trường thời gian chạy là mô hình hướng sự kiện của nó. Nó được thiết kế dựa trên khái niệm gọi lại được gọi không đồng bộ. Trong ví dụ trên, bạn đang nghe trên cổng 3000 cho các yêu cầu http đến. Khi bạn nhận được yêu cầu, tập lệnh của bạn sẽ gọi mkdir ~/Documents/NodeTutorial40 và trả lời phản hồi cho người gọi Lưu tệp của bạn, sau đó quay lại Terminal và thực hiện lệnh sau mkdir ~/Documents/NodeTutorial5 Bạn sẽ thấy đầu ra giao diện điều khiển sau Mở trình duyệt yêu thích của bạn và điều hướng đến http. //máy chủ cục bộ. 3000; . js phục vụ trang “Xin chào thế giới” của bạn Tập lệnh của bạn vẫn nằm đó, kiên nhẫn chờ đợi các yêu cầu http trên cổng 3000. Để tắt phiên bản Node của bạn, chỉ cần nhấn Ctrl+C trong Terminal Ghi chú. Các gói nút thường được viết với chức năng hoặc đối tượng cấp cao nhất được xuất. Hàm này sau đó được gán cho một biến cấp cao nhất bằng cách sử dụng hàm ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"69. Điều này giúp quản lý phạm vi và hiển thị API của mô-đun một cách lành mạnh. Bạn sẽ thấy cách tạo mô-đun tùy chỉnh sau trong hướng dẫn này khi bạn thêm trình điều khiển cho MongoDB NPM – Sử dụng các mô-đun nút bên ngoàiPhần trước đã đề cập đến Nút. js, nhưng còn các mô-đun của bên thứ ba như Express mà sau này bạn sẽ cần để cung cấp phần mềm trung gian định tuyến cho nền tảng máy chủ của mình thì sao? Các mô-đun bên ngoài cũng được nhập vào tệp có chức năng yêu cầu, nhưng bạn phải tải xuống chúng một cách riêng biệt và sau đó cung cấp chúng cho phiên bản Node của bạn Nút. js sử dụng npm — Mô-đun gói nút — để tải xuống, cài đặt và duy trì các gói phụ thuộc. Nếu bạn đã quen thuộc với Cocoapods hoặc đá quý ruby, thì mkdir ~/Documents/NodeTutorial42 sẽ cảm thấy quen thuộc. nút của bạn. ứng dụng js sử dụng gói. json xác định cấu hình và các phụ thuộc của mkdir ~/Documents/NodeTutorial42 Sử dụng ExpressExpress là một Node phổ biến. js để định tuyến phần mềm trung gian. Tại sao bạn cần gói riêng biệt này? Nếu bạn chỉ sử dụng mô-đun mkdir ~/Documents/NodeTutorial44, bạn sẽ phải phân tích cú pháp vị trí của từng yêu cầu một cách riêng biệt để tìm ra nội dung nào sẽ phục vụ cho người gọi — và điều đó sẽ trở nên khó sử dụng trong một thời gian rất ngắn Tuy nhiên, với Express, bạn có thể dễ dàng xác định các tuyến và chuỗi gọi lại cho từng yêu cầu. Express cũng giúp dễ dàng cung cấp các lệnh gọi lại khác nhau dựa trên động từ http (ví dụ:. ĐĂNG, ĐẶT, NHẬN, XÓA, ĐẦU, v.v.) Chuyển hướng ngắn sang động từ HTTPMột yêu cầu HTTP bao gồm một phương thức — hoặc động từ — giá trị. Giá trị mặc định là mkdir ~/Documents/NodeTutorial45, dùng để tìm nạp dữ liệu, chẳng hạn như các trang web trong trình duyệt. mkdir ~/Documents/NodeTutorial46 dùng để tải dữ liệu lên, chẳng hạn như gửi biểu mẫu web. Đối với API web, mkdir ~/Documents/NodeTutorial46 thường được sử dụng để thêm dữ liệu, nhưng nó cũng có thể được sử dụng cho các điểm cuối loại lệnh gọi thủ tục từ xa mkdir ~/Documents/NodeTutorial48 khác với mkdir ~/Documents/NodeTutorial46 ở chỗ nó thường được sử dụng để thay thế dữ liệu hiện có. Trong thực tế, mkdir ~/Documents/NodeTutorial46 và mkdir ~/Documents/NodeTutorial48 thường được sử dụng theo cùng một cách. để cung cấp các thực thể trong phần thân yêu cầu được đặt vào kho dữ liệu phụ trợ. mkdir ~/Documents/NodeTutorial52 được sử dụng để xóa các mục khỏi kho dữ liệu phụ trợ của bạn mkdir ~/Documents/NodeTutorial46, mkdir ~/Documents/NodeTutorial45, mkdir ~/Documents/NodeTutorial48 và mkdir ~/Documents/NodeTutorial52 là các triển khai HTTP của mô hình CRUD - Tạo, Đọc, Cập nhật và Xóa Có một vài động từ HTTP khác ít được biết đến hơn. mkdir ~/Documents/NodeTutorial57 hoạt động giống như mkdir ~/Documents/NodeTutorial45 nhưng chỉ trả về các tiêu đề phản hồi chứ không phải phần thân. Điều này giúp giảm thiểu việc truyền dữ liệu nếu thông tin trong tiêu đề phản hồi đủ để xác định xem có dữ liệu mới hay không. Các động từ khác như mkdir ~/Documents/NodeTutorial59 và brew update00 được sử dụng để định tuyến mạng Thêm Gói vào Phiên bản Nút của bạnThực hiện lệnh sau trong Terminal brew update2 Điều này tạo ra một gói mới. json để chứa cấu hình gói và các phụ thuộc của bạn Thêm đoạn mã sau vào gói. json brew update3 Tệp này xác định một số siêu dữ liệu như tên và phiên bản dự án, một số tập lệnh và quan trọng nhất cho mục đích của bạn, các gói phụ thuộc. Đây là ý nghĩa của mỗi dòng
Các phụ thuộc có dạng cặp khóa/giá trị của tên và phiên bản mô-đun. Danh sách phụ thuộc của bạn chứa phiên bản 3. 3. 4 của Express; . js để sử dụng phiên bản mới nhất của gói, bạn có thể sử dụng ký tự đại diện “*” Lưu tệp của bạn, sau đó thực hiện lệnh sau trong Terminal brew update4 Bạn sẽ thấy đầu ra sau brew update02 tải xuống và cài đặt các phụ thuộc được chỉ định trong gói. json - và các phần phụ thuộc của các phần phụ thuộc của bạn. . ] — vào một thư mục có tên là thư mục node_modules và cung cấp chúng cho ứng dụng của bạn Sau khi hoàn thành mkdir ~/Documents/NodeTutorial42, bây giờ bạn có thể sử dụng Express trong ứng dụng của mình Tìm dòng sau trong chỉ mục. js brew update5 …và thêm lệnh gọi ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"69 cho Express, như bên dưới brew update6 Điều này nhập gói Express và lưu trữ nó trong một biến có tên là brew update05 Thêm đoạn mã sau vào chỉ mục. js ngay sau phần bạn đã thêm ở trên brew update7 Điều này tạo ra một ứng dụng Express và đặt cổng của nó thành 3000 theo mặc định. Bạn có thể ghi đè lên mặc định này bằng cách tạo một biến môi trường có tên là brew update06. Loại tùy chỉnh này khá tiện dụng trong quá trình phát triển công cụ, đặc biệt nếu bạn có nhiều ứng dụng đang nghe trên nhiều cổng khác nhau Thêm đoạn mã sau vào chỉ mục. js ngay dưới phần bạn đã thêm ở trên brew update8 Điều này tạo ra một trình xử lý tuyến đường, đây là một tên ưa thích cho một chuỗi trình xử lý yêu cầu cho một URL nhất định. Express khớp với các đường dẫn đã chỉ định trong yêu cầu và thực hiện gọi lại một cách thích hợp Cuộc gọi lại của bạn ở trên yêu cầu Express khớp với gốc “ brew update07” và trả về HTML đã cho trong phản hồi. brew update08 định dạng các tiêu đề phản hồi khác nhau cho bạn — chẳng hạn như brew update09 và brew update10 — để thay vào đó, bạn có thể tập trung vào việc viết mã tuyệt vời Cuối cùng, thay thế phần brew update11 hiện tại xuống và bao gồm cả dòng mkdir ~/Documents/NodeTutorial3 bằng mã sau brew update9 Đây là một chút nhỏ gọn hơn so với trước đây. brew update13 thực hiện cuộc gọi lại brew update14 một cách riêng biệt thay vì đưa nó vào nội tuyến ở đây trong cuộc gọi brew update15. Bạn cũng đã thêm một lệnh gọi lại trình xử lý hoàn thành được gọi sau khi cổng được mở và sẵn sàng nhận yêu cầu. Bây giờ, ứng dụng của bạn đợi cổng sẵn sàng trước khi ghi thông báo “đang nghe” vào bảng điều khiển Để xem xét, lập chỉ mục. js bây giờ trông giống như sau brew install mongodb0 Lưu tệp của bạn và thực hiện lệnh sau trong Terminal mkdir ~/Documents/NodeTutorial5 Quay lại trình duyệt của bạn và tải lại brew update16 để kiểm tra xem trang Hello World của bạn có còn tải không Trang của bạn trông không khác gì trước đây, nhưng có nhiều cách để xem điều gì đang diễn ra bên trong Tạo một phiên bản khác của Terminal và thực hiện lệnh sau brew install mongodb2 Bạn sẽ thấy đầu ra sau brew update17 gửi lại các tiêu đề và nội dung phản hồi cho yêu cầu HTTP của bạn để hiển thị cho bạn các chi tiết thô về những gì đang được cung cấp. Lưu ý tiêu đề “ brew update18”; Cung cấp nội dung với ExpressThật dễ dàng để cung cấp các tệp tĩnh bằng Express Thêm câu lệnh sau vào phần ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"69 ở đầu chỉ mục. js brew install mongodb3 Bây giờ thêm dòng sau ngay sau câu lệnh brew update20 brew install mongodb4 Điều này yêu cầu Express sử dụng phần mềm trung gian brew update21 phục vụ các tệp tĩnh để đáp ứng các yêu cầu đến brew update22 ánh xạ thư mục con cục bộ công khai tới tuyến đường cơ sở brew update07; . js brew update24 để tạo chuỗi thư mục con độc lập với nền tảng mục lục. js bây giờ trông giống như sau brew install mongodb5 Sử dụng trình xử lý tĩnh, mọi thứ trong brew update25 hiện có thể được truy cập theo tên Để chứng minh điều này, hãy tắt phiên bản Node của bạn bằng cách nhấn Control+C, sau đó thực hiện các lệnh bên dưới trong Terminal brew install mongodb6 Thêm mã sau vào xin chào. html brew install mongodb7 Thao tác này tạo một thư mục mới public và tạo một tệp HTML tĩnh cơ bản Khởi động lại phiên bản Node của bạn bằng lệnh brew update26. Trỏ trình duyệt của bạn tới brew update27 và bạn sẽ thấy trang mới được tạo như sau Định tuyến nâng caoCác trang tĩnh đều tốt và tốt, nhưng sức mạnh thực sự của Express được tìm thấy trong định tuyến động. Express sử dụng một trình so khớp biểu thức chính quy trên chuỗi tuyến đường và cho phép bạn xác định các tham số cho tuyến đường Ví dụ: chuỗi tuyến đường có thể chứa các mục sau
Để dùng thử, hãy thêm tuyến đường sau vào sau câu lệnh brew update40 trong chỉ mục. js brew install mongodb8 Điều này tạo ra một tuyến đường mới chiếm tối đa ba cấp độ đường dẫn và hiển thị các thành phần đường dẫn đó trong nội dung phản hồi. Mọi thứ bắt đầu bằng brew update41 được ánh xạ tới tham số yêu cầu của tên được cung cấp Khởi động lại phiên bản Node của bạn và trỏ trình duyệt của bạn tới. brew update42. Bạn sẽ thấy trang sau “hi” là giá trị của brew update43, “every” được gán cho brew update44 và cuối cùng “body” được gán cho brew update45 Kết hợp tuyến đường này rất hữu ích khi xây dựng API REST nơi bạn có thể chỉ định đường dẫn động cho các mục cụ thể trong kho dữ liệu phụ trợ Ngoài brew update40, Express hỗ trợ brew update47, brew update48, brew update49 trong số những người khác Xử lý lỗi và xem web theo mẫuLỗi máy chủ có thể được xử lý theo một trong hai cách. Bạn có thể chuyển một ngoại lệ lên ngăn xếp cuộc gọi — và có thể tắt ứng dụng bằng cách làm như vậy — hoặc thay vào đó, bạn có thể bắt lỗi và trả lại mã lỗi hợp lệ HTTP1. 1 giao thức xác định một số mã lỗi trong phạm vi 4xx và 5xx. Phạm vi 400 lỗi dành cho lỗi người dùng, chẳng hạn như yêu cầu một mặt hàng không tồn tại. một lỗi quen thuộc là lỗi 404 Not Found phổ biến. 500 lỗi phạm vi có nghĩa là đối với các lỗi máy chủ, chẳng hạn như hết thời gian chờ hoặc lỗi lập trình, chẳng hạn như hủy đăng ký null Bạn sẽ thêm một tuyến tổng hợp để hiển thị trang 404 khi không tìm thấy nội dung được yêu cầu. Vì các trình xử lý tuyến đường được thêm vào theo thứ tự chúng được đặt bằng động từ brew update50 hoặc brew update51, nên có thể thêm một bộ xử lý bắt tất cả vào cuối chuỗi tuyến đường Thêm đoạn mã sau vào giữa brew update40 cuối cùng và lệnh gọi tới brew update53 trong chỉ mục. js brew install mongodb9 Mã này khiến trang 404 được tải nếu không có lệnh gọi nào trước đó tới brew update54 Có một số điểm cần lưu ý trong phân đoạn này
Đợi đã - một "công cụ tạo khuôn mẫu"? Express có thể sử dụng nhiều công cụ tạo khuôn mẫu khác nhau để phục vụ các chế độ xem. Để ví dụ này hoạt động, bạn sẽ thêm công cụ tạo khuôn mẫu Jade phổ biến vào ứng dụng của mình Jade là một ngôn ngữ đơn giản tránh dấu ngoặc và thay vào đó sử dụng khoảng trắng để xác định thứ tự và ngăn chứa các thẻ HTML. Nó cũng cho phép các biến, điều kiện, phép lặp và phân nhánh để tự động tạo tài liệu HTML. node0 Quay trở lại Terminal, tắt phiên bản Node của bạn và thực hiện lệnh sau node1 Điều này tải xuống và cài đặt gói brew update59 cho bạn Thêm mã sau ngay bên dưới dòng brew update20 đầu tiên trong chỉ mục. js node2 Dòng đầu tiên ở trên chỉ định vị trí của các mẫu chế độ xem, trong khi dòng thứ hai đặt Jade làm công cụ hiển thị chế độ xem Thực hiện lệnh sau trong Terminal node3 Thêm mã sau vào 404. ngọc bích node4 Hai dòng đầu tiên của mẫu Jade tạo một tài liệu HTML mới với phần tử brew update61. Dòng thứ ba tạo một phần tử brew update62 bên trong phần tử brew update61 do thụt lề. Khoảng cách rất quan trọng trong Jade. . ] Văn bản của phần tử brew update62 là giá trị được nối của "Không thể tải trang" và giá trị của tham số brew update65 được truyền vào như một phần của brew update66 trong chỉ mục. js Để kiểm tra nhanh, chỉ mục của bạn. js bây giờ trông giống như sau node5 Khởi động lại phiên bản Node của bạn và sử dụng trình duyệt của bạn để tải URL brew update67. Bạn sẽ thấy trang bên dưới Bây giờ bạn có đủ mã khởi động trong chỉ mục. js để chấp nhận các yêu cầu đến và cung cấp một số phản hồi cơ bản. Tất cả những gì bạn đang thiếu là sự bền bỉ của cơ sở dữ liệu để biến nó thành một ứng dụng web hữu ích có thể được tận dụng từ một ứng dụng dành cho thiết bị di động Giới thiệu MongoDBMongoDB là một cơ sở dữ liệu lưu trữ các đối tượng JSON. Không giống như cơ sở dữ liệu SQL, cơ sở dữ liệu NoSQL như Mongo không hỗ trợ các mối quan hệ thực thể. Ngoài ra, không có lược đồ được xác định trước, vì vậy các thực thể trong cùng một bộ sưu tập (hoặc “bảng”, theo cách nói quan hệ) không cần phải có các trường giống nhau hoặc tuân theo bất kỳ mẫu được xác định trước nào MongoDB cũng cung cấp một map-reduce ngôn ngữ truy vấn mạnh mẽ cùng với hỗ trợ dữ liệu vị trí. MongoDB phổ biến nhờ khả năng mở rộng quy mô, sao chép và phân đoạn. Các tính năng mở rộng và tính khả dụng cao không được đề cập trong hướng dẫn này Hạn chế lớn nhất của MongoDB là thiếu hỗ trợ mối quan hệ và nó có thể ngốn bộ nhớ vì nó ánh xạ bộ nhớ vào tệp cơ sở dữ liệu thực tế. Những vấn đề này có thể được giảm thiểu bằng cách cấu trúc dữ liệu cẩn thận; Do mối quan hệ chặt chẽ giữa các tài liệu MongoDB và JSON, MongoDB là một lựa chọn tuyệt vời làm cơ sở dữ liệu cho cả ứng dụng web và thiết bị di động. MongoDB không lưu trữ JSON thô; . BSON cũng có lợi thế là hỗ trợ nhiều kiểu dữ liệu hơn JSON, chẳng hạn như ngày và loại C Thêm MongoDB vào Dự án của bạnMongoDB là một ứng dụng gốc và được truy cập thông qua trình điều khiển. Có một số trình điều khiển cho hầu hết mọi môi trường, bao gồm cả Node. js. Trình điều khiển MongoDB kết nối với máy chủ MongoDB và đưa ra các lệnh để cập nhật hoặc đọc dữ liệu Điều này có nghĩa là bạn sẽ cần một phiên bản MongoDB đang chạy trên một cổng mở. May mắn thay, đó là bước tiếp theo của bạn. . ] Mở một phiên bản mới của Terminal và thực hiện các lệnh sau node6 Thao tác này khởi động daemon máy chủ MongoDB Bây giờ dịch vụ MongoDB đã hoạt động trên cổng mặc định 27017 Mặc dù trình điều khiển MongoDB cung cấp kết nối cơ sở dữ liệu nhưng nó vẫn phải được kết nối với máy chủ để dịch các yêu cầu HTTP đến thành các lệnh cơ sở dữ liệu thích hợp Tạo trình điều khiển bộ sưu tập MongoDBBạn có nhớ tuyến đường brew update68 mà bạn đã triển khai trước đó không? Vì các tài liệu MongoDB được tổ chức thành các bộ sưu tập, nên tuyến đường có thể đơn giản như. brew update69 cho phép bạn truy cập các đối tượng dựa trên hệ thống địa chỉ đơn giản theo kiểu cực kỳ RESTful Giết phiên bản Node của bạn và thực hiện các lệnh sau trong Terminal node7 Thêm mã sau vào bộ sưu tậpDriver. js node8 Dòng này nhập các gói yêu cầu khác nhau; Ghi chú. Nếu bạn quen thuộc với cơ sở dữ liệu truyền thống, bạn có thể hiểu thuật ngữ “khóa chính”. MongoDB có một khái niệm tương tự. theo mặc định, các thực thể mới được gán một trường brew update71 duy nhất của kiểu dữ liệu ObjectID mà MongoDB sử dụng để tra cứu và chèn được tối ưu hóa. Vì ObjectID là loại BSON chứ không phải loại JSON, nên bạn sẽ phải chuyển đổi mọi chuỗi đến thành ObjectID nếu chúng được sử dụng khi so sánh với trường “_id” Thêm mã sau vào bộ sưu tậpDriver. js ngay sau dòng bạn đã thêm ở trên node9 Hàm này định nghĩa phương thức khởi tạo brew update72; . Trong JavaScript, brew update73 là một tham chiếu đến ngữ cảnh hiện tại, giống như brew update74 trong Objective-C Vẫn làm việc trong cùng một tệp, hãy thêm đoạn mã sau vào bên dưới khối bạn vừa thêm console.log("Hello World");0 Phần này định nghĩa một phương thức trợ giúp brew update75 để lấy bộ sưu tập Mongo theo tên. Bạn định nghĩa các phương thức của lớp bằng cách thêm các hàm vào brew update76 brew update77 tìm nạp đối tượng bộ sưu tập và trả lại bộ sưu tập — hoặc một lỗi — cho hàm gọi lại Thêm mã sau vào bộ sưu tậpDriver. js, bên dưới khối bạn vừa thêm console.log("Hello World");1 ________ 378 lấy bộ sưu tập ở dòng A ở trên và nếu không có lỗi như không thể truy cập máy chủ MongoDB, thì nó được gọi là ________ 379 ở dòng B ở trên. Điều này trả về tất cả các đối tượng được tìm thấy brew update79 trả về một con trỏ dữ liệu có thể được sử dụng để lặp qua các đối tượng phù hợp. brew update79 cũng có thể chấp nhận đối tượng bộ chọn để lọc kết quả. brew update82 tổ chức tất cả các kết quả trong một mảng và chuyển nó tới hàm gọi lại. Cuộc gọi lại cuối cùng này sau đó trả về người gọi có lỗi hoặc tất cả các đối tượng được tìm thấy trong mảng Vẫn làm việc trong cùng một tệp, hãy thêm đoạn mã sau vào bên dưới khối bạn vừa thêm console.log("Hello World");2 Trong dòng A ở trên, brew update83 nhận được một mục từ bộ sưu tập bởi brew update71 của nó. Tương tự như phương thức brew update85, cuộc gọi này trước tiên lấy đối tượng bộ sưu tập sau đó thực hiện một brew update86 đối với đối tượng được trả về. Vì điều này khớp với trường brew update71, nên một brew update79 hoặc brew update89 trong trường hợp này phải khớp với nó bằng cách sử dụng đúng kiểu dữ liệu MongoDB lưu trữ các trường brew update71 dưới dạng BSON loại brew update70. Trong dòng C ở trên, brew update92 (C) lấy một chuỗi và biến nó thành một BSON ObjectID để khớp với bộ sưu tập. Tuy nhiên, brew update92 là persnickety và yêu cầu chuỗi hex thích hợp nếu không nó sẽ trả về lỗi. do đó, regex kiểm tra phía trước trong dòng B Điều này không đảm bảo rằng có một đối tượng phù hợp với brew update71 đó, nhưng nó đảm bảo rằng brew update70 sẽ có thể phân tích cú pháp chuỗi. Bộ chọn brew update96 khớp chính xác với trường brew update71 so với trường brew update98 được cung cấp Ghi chú. Việc đọc từ một tập hợp hoặc thực thể không tồn tại không phải là lỗi – trình điều khiển MongoDB chỉ trả về một vùng chứa trống Thêm dòng sau vào collectionDriver. js bên dưới khối bạn vừa thêm console.log("Hello World");3 Dòng này khai báo các thực thể được hiển thị hoặc đã xuất cho các ứng dụng khác liệt kê bộ sưu tậpDriver. js như một mô-đun bắt buộc Lưu các thay đổi của bạn — bạn đã hoàn tất với tệp này. Bây giờ tất cả những gì bạn cần là một cách để gọi tệp này Sử dụng trình điều khiển bộ sưu tập của bạnĐể gọi cho brew update99 của bạn, trước tiên hãy thêm dòng sau vào phần brew install mongodb00 của gói. json console.log("Hello World");4 Thực hiện lệnh sau trong Terminal node1 Điều này tải xuống và cài đặt gói MongoDB Thực hiện lệnh sau trong Terminal console.log("Hello World");6 Bây giờ thêm đoạn mã sau vào dữ liệu. ngọc bích, chú ý đến các mức thụt đầu dòng console.log("Hello World");7 Mẫu này hiển thị nội dung của một bộ sưu tập trong bảng HTML để làm cho chúng có thể đọc được bằng con người Thêm đoạn mã sau vào chỉ mục. js, ngay bên dưới dòng brew install mongodb01 console.log("Hello World");8 Tại đây, bạn bao gồm các đối tượng brew install mongodb02 và brew install mongodb03 từ mô-đun MongoDB cùng với brew update72 mới tạo của bạn Thêm đoạn mã sau vào chỉ mục. js, ngay sau dòng brew update20 cuối cùng console.log("Hello World");9 Dòng A ở trên giả sử phiên bản MongoDB đang chạy cục bộ trên cổng mặc định là 27017. Nếu bạn đã từng chạy máy chủ MongoDB ở nơi khác, bạn sẽ phải sửa đổi các giá trị này, nhưng hãy để chúng nguyên trạng cho hướng dẫn này Dòng B tạo một MongoClient mới và lệnh gọi tới brew install mongodb06 trong dòng C cố gắng thiết lập kết nối. Nếu nỗ lực kết nối của bạn không thành công, rất có thể là do bạn chưa khởi động máy chủ MongoDB của mình. Trong trường hợp không có kết nối, ứng dụng sẽ thoát ở dòng D Nếu máy khách kết nối, nó sẽ mở cơ sở dữ liệu MyDatabase tại dòng E. Một phiên bản MongoDB có thể chứa nhiều cơ sở dữ liệu, tất cả đều có không gian tên duy nhất và dữ liệu duy nhất. Cuối cùng, bạn tạo đối tượng brew update72 trong dòng F và chuyển vào một tay cầm cho máy khách MongoDB Thay thế hai cuộc gọi brew update40 đầu tiên trong chỉ mục. js với đoạn mã sau Hello World undefined0 Điều này tạo ra hai tuyến đường mới. brew install mongodb09 và brew update69. Chúng gọi các phương thức brew install mongodb11 và brew install mongodb12 tương ứng và trả về đối tượng JSON hoặc các đối tượng, tài liệu HTML hoặc lỗi tùy thuộc vào kết quả Khi bạn xác định tuyến đường brew install mongodb13 trong Express, nó sẽ khớp chính xác với “bộ sưu tập”. Tuy nhiên, nếu bạn xác định tuyến đường là brew install mongodb09 như trong dòng A thì nó sẽ khớp với bất kỳ đường dẫn cấp một nào lưu trữ tên được yêu cầu trong brew install mongodb15. bộ sưu tập trong dòng B. Trong trường hợp này, bạn xác định điểm cuối để khớp bất kỳ URL nào với bộ sưu tập MongoDB bằng cách sử dụng brew install mongodb16 của brew update72 trong dòng C Nếu tìm nạp thành công, thì mã sẽ kiểm tra xem yêu cầu có chỉ định rằng nó chấp nhận kết quả HTML trong tiêu đề ở dòng E. Nếu vậy, dòng F lưu trữ HTML được hiển thị từ mẫu brew install mongodb18 trong brew install mongodb19. Điều này chỉ đơn giản là trình bày nội dung của bộ sưu tập trong một bảng HTML Theo mặc định, trình duyệt web xác định rằng họ chấp nhận HTML trong yêu cầu của họ. Khi các loại ứng dụng khách khác yêu cầu điểm cuối này, chẳng hạn như ứng dụng iOS sử dụng brew install mongodb20, phương thức này thay vào đó trả về tài liệu JSON có thể phân tích cú pháp bằng máy tại dòng G. brew update54 trả về mã thành công cùng với tài liệu JSON do trình điều khiển bộ sưu tập tạo tại dòng H Trong trường hợp đường dẫn URL hai cấp được chỉ định, dòng tôi coi đây là tên bộ sưu tập và thực thể brew update71. Sau đó, bạn yêu cầu thực thể cụ thể bằng cách sử dụng phương thức của brew install mongodb23 brew update99 trong dòng J. Nếu thực thể đó được tìm thấy, bạn trả lại nó dưới dạng tài liệu JSON tại dòng K Lưu công việc của bạn, khởi động lại phiên bản Node của bạn, kiểm tra xem trình nền brew install mongodb25 của bạn có còn đang chạy hay không và trỏ trình duyệt của bạn tới brew install mongodb26; Này, đó là rất nhiều không có gì? Ồ, chờ đã — đó là vì bạn chưa thêm bất kỳ dữ liệu nào. Thời gian để khắc phục điều đó Làm việc với dữ liệuĐọc các đối tượng từ một cơ sở dữ liệu trống không thú vị lắm. Để kiểm tra chức năng này, bạn cần một cách để thêm các thực thể vào cơ sở dữ liệu Thêm phương thức sau vào CollectionDriver. js và thêm phương thức nguyên mẫu mới sau đây ngay trước dòng brew install mongodb27 Hello World undefined1 Giống như brew install mongodb16 và brew install mongodb29, trước tiên, brew install mongodb30 truy xuất đối tượng bộ sưu tập tại dòng A. Sau đó, cuộc gọi lại lấy thực thể được cung cấp và thêm một trường để ghi lại ngày nó được tạo ở dòng B. Cuối cùng, bạn chèn đối tượng đã sửa đổi vào bộ sưu tập tại dòng C. brew install mongodb31 cũng tự động thêm brew update71 vào đối tượng Thêm đoạn mã sau vào chỉ mục. js ngay sau chuỗi phương thức brew install mongodb29 mà bạn đã thêm một lúc trước Hello World undefined2 Điều này tạo ra một lộ trình mới cho động từ POST ở dòng A, chèn nội dung dưới dạng một đối tượng vào bộ sưu tập đã chỉ định bằng cách gọi brew install mongodb34 mà bạn vừa thêm vào trình điều khiển của mình. Dòng B trả về mã thành công của HTTP 201 khi tài nguyên được tạo Chỉ còn một mảnh ghép cuối cùng. Thêm dòng sau vào chỉ mục. js ngay sau dòng brew update20, nhưng trước bất kỳ dòng brew update50 hoặc brew update40 nào Hello World undefined3 Điều này yêu cầu Express phân tích dữ liệu nội dung đến; . Bằng cách đặt cuộc gọi này trước, phân tích cú pháp nội dung sẽ được gọi trước các trình xử lý tuyến đường khác. Bằng cách này, brew install mongodb38 có thể được chuyển trực tiếp tới mã trình điều khiển dưới dạng đối tượng JavaScript Khởi động lại phiên bản Node của bạn một lần nữa và thực hiện lệnh sau trong Terminal để chèn một đối tượng thử nghiệm vào cơ sở dữ liệu của bạn Hello World undefined4 Bạn sẽ thấy bản ghi được lặp lại cho bạn trong bảng điều khiển của bạn, giống như vậy Bây giờ hãy quay lại trình duyệt của bạn và tải lại brew install mongodb26; Cập nhật và xóa dữ liệuBạn đã triển khai các hoạt động Tạo và Đọc của CRUD — tất cả những gì còn lại là Cập nhật và Xóa. Đây là tương đối đơn giản và theo cùng một mô hình như hai người kia Thêm đoạn mã sau vào CollectionDriver. js trước dòng brew install mongodb27 Hello World undefined5 Hàm brew install mongodb41 lấy một đối tượng và cập nhật nó trong bộ sưu tập bằng cách sử dụng phương thức brew install mongodb34 của brew update99 trong dòng C. Điều này giả định rằng brew update71 của cơ thể giống như được chỉ định trong tuyến đường ở dòng A. Dòng B thêm trường brew install mongodb45 với thời gian đối tượng được sửa đổi. Thêm dấu thời gian sửa đổi là một ý tưởng hay để hiểu cách dữ liệu thay đổi sau này trong vòng đời của ứng dụng của bạn Lưu ý rằng thao tác cập nhật này sẽ thay thế bất kỳ thứ gì có trong đó trước đó bằng đối tượng mới – không hỗ trợ cập nhật cấp thuộc tính Thêm đoạn mã sau vào brew install mongodb46 ngay trước dòng brew install mongodb27 Hello World undefined6 brew install mongodb48 hoạt động giống như các phương thức CRUD khác. Nó tìm nạp đối tượng bộ sưu tập trong dòng A, sau đó gọi brew install mongodb49 với brew update98 được cung cấp trong dòng B Bây giờ bạn cần hai tuyến đường mới để xử lý các hoạt động này. May mắn thay, các động từ mkdir ~/Documents/NodeTutorial48 và mkdir ~/Documents/NodeTutorial52 đã tồn tại nên bạn có thể tạo các trình xử lý sử dụng cùng ngữ nghĩa như mkdir ~/Documents/NodeTutorial45 Thêm đoạn mã sau vào chỉ mục. js ngay sau cuộc gọi brew install mongodb54 Hello World undefined7 Cuộc gọi lại brew install mongodb55 tuân theo cùng một mẫu như thực thể đơn lẻ brew install mongodb29. bạn khớp tên bộ sưu tập và brew update71 như trong dòng A. Giống như lộ trình của brew install mongodb58, brew install mongodb55 chuyển đối tượng JSON từ phần thân sang phương thức brew install mongodb41 của brew update99 mới trong dòng B Đối tượng được cập nhật được trả về trong phản hồi (dòng C), vì vậy máy khách có thể giải quyết bất kỳ trường nào được máy chủ cập nhật, chẳng hạn như brew install mongodb45 Thêm đoạn mã sau vào chỉ mục. js ngay bên dưới phương thức brew install mongodb55 mà bạn đã thêm ở trên Hello World undefined8 Điểm cuối brew install mongodb64 rất giống với brew install mongodb55 như được hiển thị bởi dòng A ngoại trừ việc brew install mongodb64 không yêu cầu phần thân. Bạn truyền các tham số cho phương thức brew install mongodb48 của brew update99 tại dòng B và nếu thao tác xóa thành công thì bạn trả về đối tượng ban đầu với mã phản hồi là 200 tại dòng C Nếu xảy ra sự cố trong quá trình thao tác trên, bạn sẽ trả lại mã lỗi thích hợp Lưu công việc của bạn và khởi động lại phiên bản Node của bạn Thực hiện lệnh sau trong Terminal, thay thế brew install mongodb69 bằng bất kỳ giá trị nào được trả về từ lệnh gọi mkdir ~/Documents/NodeTutorial46 ban đầu Hello World undefined9 Bạn sẽ thấy phản hồi sau trong Terminal Truy cập trình duyệt của bạn và tải lại brew install mongodb26; Thực hiện lệnh sau trong Terminal để xóa bản ghi của bạn mkdir ~/Documents/NodeTutorial0 Bạn sẽ nhận được phản hồi sau từ brew update17 Tải lại brew install mongodb26 và chắc chắn, mục nhập của bạn hiện đã biến mất Và như vậy, bạn đã hoàn thành toàn bộ mô hình CRUD của mình bằng Node. js, Express và MongoDB Đi đâu từ đây?Đây là dự án mẫu đã hoàn thành với tất cả mã từ hướng dẫn ở trên Máy chủ của bạn hiện đã sẵn sàng để khách hàng kết nối và bắt đầu truyền dữ liệu. Trong phần thứ hai của loạt bài hướng dẫn này, bạn sẽ xây dựng một ứng dụng iOS để kết nối với máy chủ mới của mình và tận dụng một số tính năng thú vị của MongoDB và Express Làm cách nào để đọc dữ liệu từ MongoDB bằng nút JS?Để chọn dữ liệu từ một bộ sưu tập trong MongoDB, chúng ta có thể sử dụng phương thức findOne() . Phương thức findOne() trả về lần xuất hiện đầu tiên trong vùng chọn. Tham số đầu tiên của phương thức findOne() là một đối tượng truy vấn.
Làm cách nào để kết nối NodeJS với cơ sở dữ liệu MongoDB?Chúng ta có thể cài đặt trình điều khiển mongodb cho nodejs bằng thư viện npm. Chúng tôi sử dụng MongoClient() để tạo một phiên bản mới của MongoDB. Chúng ta sử dụng phương thức connect() của MongoClient để kết nối với cơ sở dữ liệu. Chúng tôi có thể tạo, đọc, cập nhật và xóa một/nhiều tài liệu trong MongoDB
Hàm nào được sử dụng để tìm nạp tất cả các bản ghi sinh viên của MongoDB thông qua NodeJS?Hàm find() được sử dụng để xác định rằng chúng tôi muốn truy xuất tất cả tài liệu từ bộ sưu tập MongoDB.
Làm cách nào để kết nối với cơ sở dữ liệu MongoDB trong JavaScript?Bước 1. Cài đặt trình điều khiển NodeJS và MongoDB JavaScript (NodeJS). . Bước 2. Tạo một cụm miễn phí và nhận thông tin kết nối của cụm của bạn. . Bước 3. Nhập MongoClient. . Bước 4. Tạo chức năng chính của bạn. . Bước 5. Liệt kê các cơ sở dữ liệu trong cụm của bạn. . Bước 6. Triển khai Tập lệnh NodeJS của bạn |