Node.js dựa trên mô hình đa luồng đơn, cho phép nó xử lý một lượng lớn yêu cầu đồng thời mà không cần tạo ra nhiều luồng như các máy chủ truyền thống. Điều này giúp Node.js có thể phục vụ nhiều yêu cầu hơn so với các máy chủ truyền thống như Apache HTTP Server. Ngoài ra, Node.js sử dụng mô hình non-blocking I/O, cho phép nó xử lý các yêu cầu một cách nhanh chóng và hiệu quả. Điều này giúp Node.js có thể xử lý các yêu cầu một cách nhanh chóng và hiệu quả hơn so với các máy chủ truyền thống.
Ngân hàng câu hỏi môn Server-Side development with NodeJS, Express, MongoDB - SDN301m
SDN301m cung cấp kiến thức toàn diện về lập trình Backend với NodeJS, Express framework và MongoDB. Học cách xây dựng RESTful API, bảo mật Web và triển khai ứng dụng thực tế.
Bắt đầu một phiên học theo môn
Tiến độ của bạn sẽ luôn được tính toán và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.
Bạn cần đăng nhập để bắt đầu học từ ngân hàng câu hỏi và lưu tiến độ theo môn.
Đang tải phân bố độ khó.
LTS (Long Term Support) là phiên bản Node.js được hỗ trợ trong thời gian dài. Nó được phát triển và bảo trì bởi cộng đồng Node.js và được đảm bảo sẽ nhận được các bản cập nhật bảo mật và tính năng trong một khoảng thời gian nhất định. Phiên bản LTS thường được xem là phiên bản an toàn và ổn định nhất, phù hợp cho các ứng dụng và dự án cần bảo đảm sự ổn định và an toàn trong thời gian dài. Nó không phải là phiên bản mới nhất với các tính năng mới nhất, nhưng nó đã được kiểm tra và thử nghiệm kỹ lưỡng để đảm bảo sự ổn định và an toàn.
Để khai báo một tập dữ liệu MongoDB tên là theFarm trong Meteor, bạn cần sử dụng đúng cách gọi phương thức Collection của lớp Mongo. Trong các lựa chọn trên, cách gọi đúng là farmdb = new Mongo.Collection('theFarm');. Điều này cho thấy rằng bạn cần sử dụng cách gọi phương thức với chữ hoa đầu tiên của từ Collection, và đặt tên của tập dữ liệu trong dấu ngoặc đơn. Các cách gọi khác như farmdb = new Mongo.collection('theFarm');, farmdb = new mongo.Collection('theFarm');, farmdb = new mongo.collection(theFarm'); đều không đúng và có thể gây ra lỗi khi chạy chương trình.
Thông điệp được sử dụng để cập nhật một tài liệu trong một bộ sưu tập. Trong MongoDB, lệnh cập nhật được sử dụng để thay đổi dữ liệu trong một tài liệu. Có nhiều loại lệnh cập nhật khác nhau, bao gồm cả lệnh UPDATE. Lệnh UPDATE được sử dụng để cập nhật một tài liệu dựa trên một điều kiện cụ thể. Nó có thể được sử dụng để thay đổi giá trị của một trường, thêm hoặc xóa một trường, hoặc thực hiện các hành động khác. Ngoài ra, lệnh OP_UPDATES và OP_UPDATE cũng có thể được sử dụng để cập nhật một tài liệu, nhưng lệnh UPDATE là lệnh phổ biến nhất và được sử dụng rộng rãi nhất.
Node.js là một công nghệ phát triển ứng dụng web dựa trên JavaScript, cho phép xây dựng các ứng dụng mạng có khả năng mở rộng dễ dàng. Nó cung cấp một môi trường thực thi JavaScript ở bên ngoài trình duyệt, cho phép các nhà phát triển xây dựng các ứng dụng mạng hiệu suất cao và linh hoạt. Node.js sử dụng mô hình non-blocking I/O, cho phép các ứng dụng xử lý nhiều yêu cầu đồng thời mà không cần chờ đợi nhau. Điều này làm cho Node.js trở thành một lựa chọn phổ biến cho các ứng dụng mạng cần xử lý một lượng lớn dữ liệu và yêu cầu nhanh chóng.
Để cải thiện hiệu suất của ứng dụng, bạn nên tránh sử dụng các hàm đồng bộ (synchronous functions) trong mã nguồn của mình. Các hàm đồng bộ có thể gây ra tình trạng tắc nghẽn và làm chậm ứng dụng. Thay vào đó, bạn nên sử dụng các hàm bất đồng bộ (asynchronous functions) như async/await hoặc các thư viện như Promise để thực hiện các tác vụ một cách hiệu quả hơn. Điều này sẽ giúp ứng dụng của bạn xử lý các yêu cầu nhanh chóng và hiệu quả hơn, từ đó cải thiện hiệu suất và trải nghiệm người dùng.
Mã nguồn dưới đây sẽ được thực hiện theo thứ tự sau: 1. Khai báo biến my_module bằng cách sử dụng hàm require để tải module my_module. 2. Khai báo hàm anonymous với tham số settings. 3. Trong hàm anonymous, thực hiện các hành động sau: - Chuyển đổi settings thành mảng bằng cách sử dụng hàm split(). - Lật ngược mảng vừa được tạo bằng cách sử dụng hàm reverse(). - Kết hợp các phần tử trong mảng đã được lật ngược lại thành chuỗi bằng cách sử dụng hàm join(). 4. Gọi hàm anonymous mà không truyền bất kỳ tham số nào. 5. In kết quả của hàm anonymous vào console. Vì settings là chuỗi 'Zeus', nên sau khi thực hiện các hành động trên, kết quả sẽ là 'seuZ'.
Trong MongoDB, một nhóm dữ liệu liên quan được gọi là "collection". Collection là một tập hợp các tài liệu (document) có liên quan đến nhau. Mỗi tài liệu trong collection có thể có cấu trúc khác nhau và có thể chứa các trường (field) khác nhau. Ví dụ, một collection có thể chứa thông tin về các sản phẩm trong một cửa hàng, với mỗi tài liệu đại diện cho một sản phẩm cụ thể. Collection được sử dụng để lưu trữ và quản lý dữ liệu trong MongoDB.
Để trả lời câu hỏi này, chúng ta cần hiểu chức năng của hàm insertData(). Hàm này được sử dụng để chèn dữ liệu vào một tập dữ liệu (collection) trong cơ sở dữ liệu. Trong trường hợp này, chúng ta cần chèn 400 tài liệu (document) vào tập dữ liệu testData. Các lựa chọn được đưa ra bao gồm insertData("test", "testData", 200), insertData("test", "testData", 400) và insertData("test", "testData", 600). Để xác định câu trả lời đúng, chúng ta cần xem xét giá trị thứ ba trong hàm insertData(), đó là số lượng tài liệu cần chèn. Câu trả lời đúng sẽ là insertData("test", "testData", 400) vì nó chính xác về số lượng tài liệu cần chèn.
Để giúp các nhà phát triển phối hợp quy trình tạo mã API, chúng ta cần có một tiêu chuẩn chung. Tiêu chuẩn này sẽ cung cấp một ngôn ngữ chung để mô tả API, giúp dễ dàng tạo và quản lý mã API. Một trong những tiêu chuẩn phổ biến nhất là OpenAPI. OpenAPI là một ngôn ngữ mô tả API được sử dụng rộng rãi trong ngành công nghiệp phần mềm. Nó cho phép các nhà phát triển mô tả cấu trúc và chức năng của API một cách rõ ràng, giúp dễ dàng tạo mã API và tích hợp với các hệ thống khác. Ngoài ra, OpenAPI cũng cung cấp các công cụ và công nghệ để tự động tạo mã API dựa trên mô tả API, giúp giảm thiểu thời gian và công sức cần thiết để tạo mã API.
Express là một khung ứng dụng web đơn giản và linh hoạt. Nó cho phép bạn tạo ra các ứng dụng web nhanh chóng và hiệu quả. Để sử dụng Express, bạn cần có Node.js, một môi trường chạy JavaScript trên máy chủ. Express cung cấp các tính năng như hỗ trợ các loại nội dung khác nhau, quản lý các yêu cầu HTTP, và tạo ra các ứng dụng web đa nền tảng. Nó cũng cho phép bạn sử dụng các thư viện và công cụ khác để tăng cường khả năng của ứng dụng web.
Trong ExpressJS, phương thức app.all(path, callback) được sử dụng để định nghĩa một hàm xử lý cho tất cả các phương thức HTTP (GET, POST, PUT, DELETE, ...). Điều này cho phép bạn thực hiện một hành động chung cho tất cả các yêu cầu HTTP đến một đường dẫn cụ thể. Ví dụ, bạn có thể sử dụng app.all để kiểm tra quyền truy cập hoặc thực hiện một hành động bảo mật trước khi xử lý yêu cầu HTTP thực tế.
Firebase Database Rule có hai loại chính. Loại đầu tiên là Rule cơ bản, cho phép bạn kiểm soát quyền truy cập vào dữ liệu của ứng dụng. Bạn có thể thiết lập các quy tắc để cho phép hoặc chặn truy cập vào dữ liệu dựa trên các điều kiện như ID người dùng, địa điểm, v.v. Loại thứ hai là Rule nâng cao, cho phép bạn thiết lập các quy tắc phức tạp hơn để kiểm soát quyền truy cập vào dữ liệu. Ví dụ, bạn có thể thiết lập các quy tắc để cho phép truy cập vào dữ liệu chỉ khi người dùng đã đăng nhập và có quyền truy cập phù hợp.
Scaffolding cho phép chúng ta dễ dàng tạo một khung xương cho một ứng dụng web. Nó cung cấp một cấu trúc cơ bản cho ứng dụng, bao gồm các file và thư mục cần thiết để bắt đầu phát triển. Scaffolding giúp giảm thiểu thời gian và công sức cần thiết để tạo một ứng dụng web mới, đồng thời cũng giúp đảm bảo rằng ứng dụng được xây dựng theo các tiêu chuẩn và quy trình nhất quán.
Quá trình xác định một cá nhân được gọi là xác thực. Xác thực là quá trình xác minh danh tính của một cá nhân hoặc thiết bị để đảm bảo rằng họ có quyền truy cập vào hệ thống hoặc tài nguyên cụ thể. Quá trình này thường bao gồm việc nhập thông tin xác thực, chẳng hạn như tên người dùng và mật khẩu, và sau đó so sánh nó với thông tin được lưu trữ trong cơ sở dữ liệu. Nếu thông tin xác thực khớp, cá nhân hoặc thiết bị sẽ được xác thực và có thể truy cập vào hệ thống hoặc tài nguyên.