Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Chào các bạn, hôm nay chúng ta sẽ tìm hiểu cách upload và lưu trữ image mongoDB database. Nó không được khuyến nghị trong các dự án trong thế giới thực để lưu trữ các tệp phương tiện trong cơ sở dữ liệu. Vậy tại sao chúng ta cần học, vì chúng ta là developer mà 😞. Đùa thôi

Vì vậy, hãy bắt đầu mã hóa


Liên kết dự án Github

Tổng quan về ứng dụng

Cấu trúc dự án

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Bảng sau đây hiển thị tổng quan về các API còn lại được xuất

MethodsUrlsActionsPOST/file/uploadupload ảnh lên cơ sở dữ liệuGET/file/. filenamestream imageDELETE/file/. filenameXóa hình ảnh khỏi cơ sở dữ liệu

Lưu trữ tệp là một tính năng quan trọng cần có trong nhiều quy trình trên nhiều loại ứng dụng khác nhau. Sự tồn tại của các quy trình như Content Delivery Networks (CDNs), được thiết lập thông qua các tùy chọn đám mây của bên thứ ba như Amazon Web Services và các tùy chọn lưu trữ tệp cục bộ luôn giúp việc xây dựng một tính năng như vậy trở nên dễ dàng hơn

Tuy nhiên, khái niệm lưu trữ tệp trực tiếp vào cơ sở dữ liệu thông qua một lệnh gọi API duy nhất đã thu hút tôi trong một thời gian dài. Đó là nơi GridFS xuất hiện trong bức tranh đối với tôi

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?
Có lẽ không phải là cách tốt nhất để triển khai hệ thống lưu trữ tệp

GridFS - Sự hiểu biết của giáo dân

MongoDB có một đặc tả trình điều khiển để tải lên và truy xuất các tệp từ nó được gọi là GridFS. GridFS cho phép bạn lưu trữ và truy xuất các tệp, bao gồm các tệp vượt quá giới hạn kích thước tài liệu BSON là 16 MB

GridFS về cơ bản lấy một tệp và chia nó thành nhiều phần được lưu trữ dưới dạng các tài liệu riêng lẻ trong hai bộ sưu tập

  • bộ sưu tập chunk (lưu trữ các phần tài liệu) và
  • bộ sưu tập file (lưu trữ siêu dữ liệu bổ sung do đó)

Mỗi đoạn được giới hạn ở kích thước 255 KB. Điều này có nghĩa là đoạn cuối cùng thường bằng hoặc nhỏ hơn 255 KB. Nghe khá gọn gàng

Khi bạn đọc từ GridFS, trình điều khiển sẽ tập hợp lại tất cả các khối nếu cần. Điều này có nghĩa là bạn có thể đọc các phần của tệp theo phạm vi truy vấn của mình. Chẳng hạn như nghe một đoạn của tệp âm thanh hoặc tìm nạp một đoạn của tệp video.  

Ghi chú. Nên sử dụng GridFS để lưu trữ các tệp thường vượt quá giới hạn kích thước 16 MB. Đối với các tệp nhỏ hơn, nên sử dụng định dạng BinData để lưu trữ tệp trong các tài liệu đơn lẻ

Điều này tóm tắt cách GridFS hoạt động nói chung. Đã đến lúc nhúng chân vào một số mã hoạt động và xem cách triển khai một hệ thống như vậy

Nói đủ rồi, cho tôi xem mã

Chúng tôi đang sử dụng Nút. js có quyền truy cập vào phiên bản đám mây của MongoDB để thiết lập. Bạn có thể tìm thấy kho lưu trữ mã cho ứng dụng mẫu tại đây

tarique93102/gridfs-file-storage

Đóng góp cho sự phát triển tarique93102/gridfs-file-storage bằng cách tạo một tài khoản trên GitHub

tarique93102GitHub

Chúng tôi sẽ hoàn toàn tập trung vào các đoạn mã liên quan đến các chức năng của GridFS. Chúng ta sẽ tìm hiểu cách thiết lập và sử dụng nó để lưu trữ tệp, truy xuất tệp hoặc một tệp cụ thể và xóa một tệp cụ thể. Hãy bắt đầu sau đó

Khởi tạo công cụ lưu trữ

Các gói cần thiết để khởi tạo động cơ là multer-gridfs-storagemulter. Chúng tôi cũng sử dụng phần mềm trung gian method-override để kích hoạt thao tác xóa tệp. Mô-đun npm crypto được sử dụng để mã hóa tên tệp khi được lưu trữ và đọc từ cơ sở dữ liệu

Khi công cụ lưu trữ sử dụng GridFS được khởi tạo, bạn chỉ cần gọi nó bằng phần mềm trung gian multer. Sau đó, nó được chuyển đến tuyến tương ứng thực hiện các hoạt động lưu trữ tệp khác nhau

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Khởi tạo Luồng GridFS

Chúng tôi khởi tạo luồng GridFS như được thấy trong mã bên dưới. Luồng là cần thiết để đọc các tệp từ cơ sở dữ liệu và cũng để giúp hiển thị hình ảnh cho trình duyệt khi cần

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Tải lên một tệp hoặc hình ảnh

Chúng tôi sử dụng lại phần mềm trung gian tải lên mà chúng tôi đã tạo trước đó.  

Ghi chú. Tên file được sử dụng làm tham số trong upload.single() vì chúng tôi có khóa có tên tương tự chứa tệp được gửi từ ứng dụng khách

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Tải lên nhiều tệp hoặc hình ảnh

Chúng tôi cũng có thể tải lên nhiều tệp cùng một lúc. Thay vì upload.single(), chúng ta chỉ cần sử dụng chunk0

Ghi chú. Số lượng tệp được tải lên có thể ít hơn số lượng tệp đã xác định

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Tìm nạp tất cả các tệp từ cơ sở dữ liệu

Sử dụng luồng được khởi tạo, chúng tôi có thể tìm nạp tất cả các tệp trong cơ sở dữ liệu cụ thể bằng cách sử dụng chunk1. Sau khi lấy được các tệp, chúng tôi ánh xạ nó thành một mảng và gửi phản hồi

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Tìm nạp một tệp theo tên tệp

Rất đơn giản để truy vấn GridFS cho một tệp duy nhất dựa trên một thuộc tính cụ thể như chunk2. Sử dụng luồng GridFS, bạn có thể truy vấn cơ sở dữ liệu thông qua chức năng chunk3

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Kết xuất một hình ảnh đã tìm nạp vào trình duyệt

Đây là phần phức tạp hơn một chút vì bạn không chỉ phải tìm nạp tệp từ cơ sở dữ liệu mà còn phải hiển thị tệp đó dưới dạng hình ảnh trên trình duyệt tương ứng. Chúng tôi tìm nạp tệp bình thường. Không có thay đổi trong quá trình đó

Sau đó, với sự trợ giúp của phương thức chunk4 trên luồng gfs, chúng ta có thể dễ dàng hiển thị hình ảnh khi nó trả về luồng có thể đọc được. Làm xong việc đó, chúng ta có thể sử dụng JavaScript của chunk5 để truyền phản hồi

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Xóa một tệp cụ thể theo Id

Xóa một tập tin cũng đơn giản như nhau. Chúng tôi sử dụng phương pháp luồng chunk6 với tham số chunk7 để truy vấn và xóa tệp liên quan

Làm cách nào để tải lên tệp trong MongoDB bằng nút js?

Đó là những chức năng chính được cung cấp bởi thiết kế công cụ lưu trữ. Tôi đã tận dụng các tính năng GridFS đã thảo luận để tạo một ứng dụng tải lên hình ảnh đơn giản. Bạn có thể tìm hiểu sâu hơn về mã trong kho lưu trữ

Phần kết luận

Tôi đã mất một thời gian và khá nhiều nỗ lực để hiểu cách sử dụng GridFS cho một dự án cá nhân. Vì điều này, tôi muốn đảm bảo rằng ít nhất một người khác không phải đầu tư cùng một khoảng thời gian

Phải nói rằng, tôi khuyên bạn nên sử dụng GridFS một cách thận trọng. Nó không phải là viên đạn bạc cho tất cả các mối quan tâm về lưu trữ tệp của bạn. Tuy nhiên, đó là một đặc điểm kỹ thuật tiện lợi để biết và nhận thức được.  

Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào, bạn có thể bình luận trong bài đăng hoặc liên hệ với tôi trên chunk8

Trong thời gian đó, hãy tiếp tục viết mã

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Làm cách nào để tải lên tệp trong MongoDB bằng nút js?
tarique ejaz

Tôi viết mã, đọc, viết và chỉ đơn giản là khao khát trở thành một cá nhân tốt hơn tôi ngày hôm nay


Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm cách nào để tải tệp lên MongoDB bằng Nodejs?

Tải tệp lên trong MongoDB bằng Node js .
Bước 1 – Tạo ứng dụng Node Express js
Bước 2 – Cài đặt các phụ thuộc Multer của cầy mangut phân tích cú pháp cơ thể nhanh
Bước 3 – Kết nối ứng dụng với MongoDB
Bước 4 – Tạo mô hình
Bước 5 – Tạo biểu mẫu đánh dấu HTML tải lên tệp/hình ảnh
Bước 6 – Nhập mô-đun trong ứng dụng. js
Bước 7 – Khởi động máy chủ ứng dụng

Chúng tôi có thể tải tệp lên trong MongoDB không?

MongoDB có một đặc tả trình điều khiển để tải lên và truy xuất các tệp từ nó được gọi là GridFS. GridFS cho phép bạn lưu trữ và truy xuất các tệp, bao gồm các tệp vượt quá giới hạn kích thước tài liệu BSON là 16 MB

Làm cách nào để tải tệp lên trong nodejs?

Bước 1. Tạo biểu mẫu tải lên. Tạo một nút. js viết biểu mẫu HTML, với trường tải lên. .
Bước 2. Phân tích tệp đã tải lên. Bao gồm mô-đun Formidable để có thể phân tích cú pháp tệp đã tải lên sau khi tệp đến máy chủ. .
Bước 3. Lưu các tập tin

Làm cách nào để tải lên dữ liệu trong MongoDB?

Tóm tắt .
Đăng ký tài khoản MongoDB
Tạo một cụm
Thêm người dùng cơ sở dữ liệu
Định cấu hình kết nối mạng
Tải dữ liệu mẫu
Nhận chuỗi kết nối