Trong bài tập này, chúng ta sẽ tiếp tục với bài tập trước đó, nơi chúng ta
đã phát triển sự tương tác giữa ứng dụng nút và máy chủ MongoDB.
Trong bài tập này, tôi sẽ đóng gói một vài trong số các
hoạt động cơ sở dữ liệu vào một mô-đun nút của riêng mình,
một mô-đun nút dựa trên tập tin,
và sau đó sử dụng nó trong ứng dụng nút của tôi để tương tác với máy chủ.
Đồng thời, chúng tôi sẽ thực hiện một số thao tác trên
máy chủ để chứng minh rằng chúng tôi sẽ có thể
tương tác với máy chủ bằng cách sử dụng ứng dụng nút của chúng tôi và trình điều khiển nút MongoDB.
Để bắt đầu, chúng ta hãy đi đến dự án của chúng tôi,
và sau đó tạo một tập tin mới có tên operations.js.
Tập tin này sẽ đóng gói tất cả các hoạt động cơ sở dữ liệu,
bốn hoạt động mà tôi sẽ thực hiện chèn,
tìm, loại bỏ và cập nhật một tài liệu trong cơ sở dữ liệu của tôi.
Bây giờ, điều này sẽ được tổ chức như một mô-đun nút dựa trên tập tin,
sau đó tôi sẽ sử dụng nó trong ứng dụng nút của tôi để truy cập vào máy chủ.
Vì vậy, để bắt đầu, hãy để
tôi đầu tiên yêu cầu assert,
trong mô-đun nút này,
và kể từ khi điều này xảy ra là một mô-đun nút,
chúng tôi sẽ xuất khẩu một số phương pháp từ mô-đun nút.
Phương pháp đầu tiên sẽ được chèn tài liệu rõ ràng như bạn mong đợi,
và điều này sẽ mất bốn tham số DB,
MongoDB, kết nối cơ sở dữ liệu trong ứng dụng nút của tôi,
mà tôi sẽ có được trong ứng dụng nút.
Sau đó, thứ hai là tài liệu mà tôi muốn chèn.
Tham số thứ ba là bộ sưu tập mà tôi muốn chèn tài liệu.
Một trong những cuối cùng là một hàm callback,
mà sẽ được gọi trở lại một khi thao tác đó được hoàn thành.
Sau đó, chúng ta hãy đóng hàm ở đây,
và điều này về cơ bản đóng gói phương pháp tài liệu chèn ở đây.
Vì vậy, đây là một chức năng được xuất khẩu bởi mô-đun nút này ở đây.
Bây giờ, tôi cũng sẽ kết hợp thêm một vài phương pháp ở đây.
Cái thứ hai sẽ được tìm thấy tài liệu.
Không chỉ một mà là một vài tài liệu.
Điều này tôi sẽ tìm kiếm bộ sưu tập và tìm thấy tất cả các tài liệu trong bộ sưu tập.
Vì vậy, đó là lý do tại sao tôi chỉ lấy cơ sở dữ liệu
và bộ sưu tập như hai tham số cùng với callback.
Chức năng thứ ba mà tôi sẽ thực hiện một xuất khẩu từ đây là removedocument.
Điều này hỗ trợ thao tác xóa,
và do đó tên của tài liệu sẽ lấy cơ sở dữ liệu, tài liệu,
bộ sưu tập và gọi lại là bốn tham số,
và chúng tôi sẽ gọi gọi gọi lại khi thao tác hoàn tất.
Điều cuối cùng tất nhiên là cập nhật tài liệu.
Bây giờ tất nhiên, bạn không nhất thiết phải làm theo cách này.
Tôi chỉ cảm thấy rằng đây sẽ là một cách khác để minh họa cách bạn có thể
đóng gói các chức năng đó vào mô-đun nút riêng của nó.
Đây chỉ là tổ chức lại mã theo cách dễ sử dụng hơn.
Vì vậy, đối với xuất khẩu,
đối với tài liệu cập nhật nó có DB,
một số cách để xác định tài liệu như là một tham số thứ hai.
Tham số thứ ba là bản cập nhật,
và tham số thứ tư là bộ sưu tập trong đó
tài liệu này tồn tại, và gọi lại.
Vì vậy, bốn chức năng được xuất khẩu bởi các tập tin operations.js.
Bây giờ, trong các chức năng này,
chúng ta hãy thực hiện từng cái một.
Trong tài liệu chèn,
điều đầu tiên mà tôi sẽ làm là nói
bộ sưu tập const và nó sẽ nói bộ sưu tập DB,
và tham số là bộ sưu tập.
Vì vậy, chúng tôi sẽ tìm kiếm bộ sưu tập ở đó.
Bây giờ, điều này phải được thực hiện trong tất cả bốn phương pháp.
Vì vậy, tôi sẽ đi và dán mã này vào tất cả bốn phương pháp ở đây,
bởi vì đó là một chức năng mà tôi cần trong tất cả chúng.
Vì vậy, một khi tôi có được giữ của bộ sưu tập,
sau đó như bạn nhớ lại từ bài tập trước,
tôi có thể thực hiện các hoạt động trên bộ sưu tập.
Vì vậy, tôi sẽ nói bộ sưu tập, chèn,
và điều này mất như là tham số đầu tiên tài liệu được chèn vào,
và tham số thứ hai là gọi lại với lỗi và kết quả đó.
Vì vậy, bây giờ khi tài liệu này
được chèn vào bằng cách gọi phương thức chèn vào bộ sưu tập cơ sở dữ liệu,
phương thức chèn cho phép tôi nhắc nhở bạn,
được hỗ trợ bởi trình điều khiển MongoDB.
Vì vậy, đó là phương pháp mà chúng tôi đang sử dụng ở đây,
hoặc đó là chức năng mà chúng tôi đang sử dụng ở đây.
Bây giờ, điều đầu tiên mà tôi sẽ kiểm tra cho điều này, assertequal err, null.
Vì vậy, tôi muốn chắc chắn rằng tôi không có một lỗi.
Vì vậy, tôi muốn đảm bảo rằng lỗi là null.
Nếu nó không phải là null,
sau đó điều này sẽ in ra thông tin và sau đó thoát khỏi ứng dụng.
Tại thời điểm này, tôi cảm thấy rằng điều này là okay để xử lý nó sau này,
chúng ta sẽ thấy làm thế nào chúng ta có thể có một cách toàn cầu để xử lý tất cả các lỗi khi chúng ta
thực hiện trong bài học tiếp theo một cách khác để truy cập vào cơ sở dữ liệu MongoDB.
Bây giờ, sau khi tôi làm điều này,
tôi sẽ thực hiện,
tôi sẽ chỉ cần đăng nhập thông tin này.
Vì vậy, tôi sẽ nói, giao diện điều khiển đăng nhập và chèn nó.
Vì vậy, thông tin này sẽ được in ra màn hình ở đây, chèn vào.
Bây giờ một lần nữa, hãy nhớ dấu chấm phẩy và tất cả những gì
quan trọng đừng quên chúng khi bạn đang gõ mã của bạn.
Vì vậy, tôi sẽ nói kết quả chèn.
Đối tượng kết quả này được trả về,
sẽ có trên đó một thuộc tính được gọi là thuộc tính kết quả,
và thuộc tính này sẽ chứa một giá trị.
Thuộc tính kết quả này cũng là một đối tượng JavaScript,
và điều này sẽ chứa một thuộc tính n cho chúng ta biết có bao nhiêu tài liệu đã được chèn vào.
Vì vậy, đó là thông tin mà tôi sẽ in ra ở đây,
và sau đó chúng tôi sẽ đi đến dòng tiếp theo và
nói “tài liệu vào bộ sưu tập”.
Bây giờ, đây chỉ là một cách để thông báo cho người dùng rằng hoạt động này đã diễn ra một cách chính xác,
và sau đó họ sẽ vượt qua kết quả đó trở lại chức năng gọi của chúng tôi.
Vì vậy, chúng tôi sẽ gọi callback và sau đó kết quả sẽ là tham số để callback.
Vì vậy, khi chúng tôi thực hiện việc sử dụng chức năng này trong tập tin index.js của
chúng tôi, chúng tôi sẽ cung cấp các callback có mà sẽ
nhận được kết quả như là tham số đến.
Vì vậy, đây là cho “InsertDocument”.
Bây giờ, với “FindDocument
”, những gì tôi sẽ làm là nói,
“coll.find” và tôi sẽ tìm tất cả các tài liệu.
Vì vậy, đó là lý do tại sao tôi sẽ cung cấp cho một đối tượng JavaScript trống ở đây,
mà sẽ phù hợp với tất cả các tài liệu trong bộ sưu tập và sau đó tôi sẽ nói,
“toArray” và điều này sẽ mất như một tham số một chức năng gọi lại,
và bên trong chức năng gọi lại này, tất nhiên,
tôi sẽ khẳng định rằng điều này không phải là null,
và sau đó chúng ta sẽ nói, “callback docs.”
Chúng tôi sẽ chỉ đơn giản là chuyển lại các tài liệu truy xuất trở lại chức năng gọi điện.
Bây giờ, cho “RemoveDocument”, tôi sẽ nói, “bộ sưu tập DeleteOne.”
Vì vậy, tôi sẽ cố gắng tìm tài liệu đầu tiên
phù hợp với những gì chúng tôi đã chỉ định và sau đó xóa nó.
Và sau đó điều này sẽ mất,
một lần nữa, một hàm callback như một tham số thứ hai,
và bên trong hàm callback này,
điều đầu tiên mà tôi kiểm tra là để đảm bảo rằng lỗi không phải là null.
Và sau đó, chúng ta sẽ nói,
“đăng nhập giao diện điều khiển đã xóa tài liệu dấu phẩy.”
Chúng tôi sử dụng dấu phẩy ở đây vì đây là một đối tượng JavaScript vì vậy,
nếu bạn chỉ định giao diện điều khiển đăng nhập như thế này,
tài liệu sẽ được in ra và sau đó chúng tôi sẽ vượt qua
kết quả đó trở lại thông qua chức năng gọi lại.
Và sau đó cuối cùng, cho bản cập nhật chúng tôi sẽ coll.UpdateOne.
Đây là một phương pháp trình điều khiển MongoDB hỗ trợ.
Vì vậy, tôi sẽ nói, “update.one document
”, và tham số thứ hai là nơi chúng ta
sẽ vượt qua trong các trường cần được cập nhật.
Và cách nó được thực hiện,
chúng ta sẽ nói, “đồng đô la đặt đại tràng cập nhật.”
Vì vậy, điều này sẽ có thông tin cập nhật mà
tôi đang gửi và sau đó vượt qua nó vào bản cập nhật.one.
Đầu tiên là tài liệu cần được cập nhật.
Thứ hai là trường nào của tài liệu cần được cập nhật ở đây.
Và tham số thứ ba là null,
và tham số cuối cùng đó là một hàm callback,
mà rõ ràng sẽ cho chúng ta kết quả của hoạt động.
Vì vậy, điều đầu tiên tôi sẽ kiểm tra để đảm bảo rằng lỗi không phải là null.
Sau đó, tôi sẽ làm một “đăng nhập giao diện điều khiển cập nhật tài liệu với.”
Bây giờ một lần nữa, các bản ghi giao diện điều khiển là hoàn toàn cho chúng tôi để
đảm bảo rằng mã đang làm những gì nó đang làm.
Nó không giúp ích gì trong bất kỳ cách nào.
Đây chỉ là thông tin riêng của chúng ta.
Trong một máy chủ sản xuất,
bạn sẽ không có bản ghi giao diện điều khiển này, có thể.
Bạn có thể vô hiệu hóa chúng. Vậy, đúng vậy.
Vì vậy, bốn phương pháp được hỗ trợ trong mô-đun nút dựa trên tập tin cụ thể chèn,
tìm, loại bỏ và cập nhật.
Vì vậy, bây giờ mà chúng tôi đã thực hiện mô-đun nút dựa trên tập tin này, chúng
ta hãy đi đến các tập tin index.js,
và sau đó để sử dụng các mô-đun nút dựa trên tập tin,
tôi cần phải yêu cầu điều này ở đây.
Vì vậy, tôi sẽ nói, “const dboper yêu cầu.”
Vì đây là một mô-đun nút dựa trên tệp, bạn có được đường dẫn đầy đủ đến mô-đun nút
, và trong trường hợp này xảy ra. /hoạt động
bởi vì nó nằm trong cùng một thư mục như tập tin index.js của tôi.
Bây giờ, một khi chúng tôi đã làm điều này,
sau đó ngay tại đây, chức năng
này, mã này mà chúng tôi đã làm để truy cập vào cơ sở dữ liệu bây giờ chèn,
chúng tôi sẽ sử dụng dboper mà chúng tôi vừa thực hiện để truy cập vào cơ sở dữ liệu đó.
Vì vậy, chúng ta sẽ nói, “dboper insert document,
" và “insert document” này lấy db làm tham số đầu tiên.
Các db ở đây, là db này mà đi vào khi chúng ta gọi MongoClient kết nối.
Vì vậy, db sẽ được thông qua, do đó,
mô-đun nút hoạt động của tôi biết nơi để truy cập vào cơ sở dữ liệu.
Sau đó, tham số thứ hai là,
vì vậy nếu bạn nhìn vào “chèn tài liệu”, bạn sẽ thấy
rằng tham số thứ hai là tài liệu được chèn vào.
Vì vậy, tôi sẽ nói, “Tên. “
Tôi chỉ cần xây dựng một đối tượng JSON hoặc đối tượng JavaScript ở đây,
mà sẽ tự động được ánh xạ vào đối tượng liền kề khi nó đang được chèn vào.
Và tham số thứ ba, như bạn thấy,
“bộ sưu tập tài liệu db và gọi lại.”
Vì vậy, tham số thứ ba là bộ sưu tập và bộ sưu tập là
bộ sưu tập các món ăn và một trong những cuối cùng là gọi lại.
Cuộc gọi lại một lần nữa khi bạn nhớ lại sẽ nhận được kết quả.
Nếu bạn nhìn lại em bé thực hiện tài liệu chèn,
cuộc gọi lại nhận được kết quả là tham số.
Vì vậy, bên trong callback này, chúng tôi sẽ xử lý giá trị kết quả ở đây.
Vì vậy, khi giá trị kết quả đến trong chúng ta sẽ làm một console.log.
Chúng ta sẽ nói chèn tài liệu
dấu gạch chéo ngược N và chúng ta sẽ nói kết quả OPS.
OPS cho bạn biết số lượng các thao tác chèn đã được thực hiện.
Vì vậy, đây là một đối tượng đó sẽ là trên kết quả
JavaScript đối tượng được thông qua trở lại như là
tham số và vì vậy tôi chỉ sẽ in ra giá trị đó.
Vì vậy, nó sẽ cho chúng ta một số thông tin về những gì đã xảy ra.
Bây giờ một khi điều này được hoàn thành,
bên trong chức năng gọi lại này tôi sẽ gọi các hoạt động cơ sở dữ liệu tiếp theo.
Vì vậy, tôi sẽ nói dboper và sau đó tìm các tài liệu.
Sau đó, tôi sẽ nói dbdishes và tham số thứ ba là tài liệu,
đó là hàm callback.
Khi tôi nhận được các tài liệu tôi sẽ làm một
console.log nói tài liệu tìm thấy,
và chúng tôi sẽ chỉ đơn giản là khóa các tài liệu vào màn hình.
Vì vậy, điều này sẽ in ra các tài liệu được tìm thấy.
Chú ý rằng cuộc gọi này là bên
trong chức năng gọi lại được áp dụng cho các cuộc gọi chức năng trước đó,
vì vậy đó là một cái gì đó mà tôi muốn bạn để ý cụ thể.
Bây giờ, một lần nữa bên trong chức năng này gọi họ cần phải làm điều đó theo cách này bởi vì cho đến khi
gọi lại này được gọi là chúng ta không thể làm các hoạt động tiếp theo.
Vì vậy, trong thao tác tiếp theo tôi sẽ cập nhật tài liệu mà tôi vừa chèn.
Vì vậy, tôi sẽ nói cập nhật tài liệu và tôi sẽ nói cập nhật tài liệu DB,
và sau đó tham số tiếp theo là tài liệu
và tôi không cần phải chỉ định toàn bộ tài liệu tôi chỉ có thể chỉ định một trường và
sau đó sẽ tìm thấy tài liệu phù hợp với trường cụ thể này.
Những gì tôi sẽ làm là tham số tiếp theo là bản cập nhật cần được cung cấp.
Vì vậy, bản cập nhật là lĩnh vực mà tôi muốn cập nhật,
vì vậy tôi sẽ cập nhật
lĩnh vực mô tả bằng cách nói Kiểm tra Cập Nhật,
và sau đó thứ tư là bộ sưu tập đó là món ăn,
và cuối cùng là chức năng gọi lại mà có được
các tài liệu như là giá trị trả về hoặc
đúng hơn là kết quả của hoạt động cập nhật mà chúng tôi vừa thực hiện.
Sau đó, bên trong chức năng gọi lại này,
tôi sẽ một lần nữa làm một console.log nói
cập nhật tài liệu dấu gạch chéo ngược N. Các tài liệu Cập Nhật sẽ được thông qua
trở lại result.result trên
tài sản này của các đối tượng kết quả được thông qua theo dõi.
Một lần nữa chú ý như thế nào các cuộc gọi được lồng nhau
bên trong các chức năng callback ở đây.
Tôi muốn bạn nhận thấy cấu trúc này của mã
đặc biệt bởi vì đó là những gì tôi sẽ trở lại trong bài tập tiếp theo.
Bây giờ sau khi tôi làm điều đó,
tôi sẽ tìm thấy các tài liệu,
vì vậy hãy để tôi chỉ sao chép điều đó và sau đó tôi sẽ sử dụng cùng một mã ở đây.
Vì vậy, tôi sẽ nói, tìm tài liệu.
Bên trong đây tôi một lần nữa sẽ nói, tìm thấy tài liệu cập nhật.
Sau đó, cuối cùng khi tôi đang thực hiện với điều này,
tôi sẽ chỉ đơn giản là gọi db thả bộ sưu tập.
Vì vậy, tôi sẽ xóa bộ sưu tập món ăn này để tôi
sẽ làm sạch cơ sở dữ liệu của tôi để tôi không có
bất cứ điều gì hơn bởi vì cho bài tập tiếp theo tôi muốn làm sạch
cơ sở dữ liệu và sau đó bắt đầu với một cơ sở dữ liệu sạch hơn.
Vì vậy, tôi sẽ làm sạch
bộ sưu tập các món ăn và sau đó điều này sẽ dẫn đến một cuộc gọi lại.
Vì vậy, bên trong đây tôi sẽ làm một console.log nói,
thả bộ sưu tập, và sau đó tôi sẽ chỉ in ra kết quả mà đi vào.
Sau đó, cuối cùng, đóng cơ sở dữ liệu.
Lưu ý rằng cấu trúc của mã,
DB chèn tài liệu và bên trong hàm callback tôi sẽ gọi
các chức năng tiếp theo và bên
trong callback off mà tôi sẽ gọi
các chức năng tiếp theo và bên trong callback chức năng tiếp theo và như vậy.
Vì vậy, bạn thấy một tập hợp lồng nhau của callbacks ở đây và
một cấu trúc cây lồng nhau tập hợp các cuộc gọi back ở đây.
Đó là điều mà tôi muốn các bạn chú ý đến.
Hãy lưu các thay đổi và đi và xem phiên bản này của ứng dụng của chúng tôi.
Quay trở lại thiết bị đầu cuối,
hãy để tôi thực hiện ứng dụng.
Vì vậy, hãy để tôi gõ NPM bắt đầu và chúng ta sẽ thấy kết quả đó.
Bây giờ, từ kết quả này bạn có thể thấy rằng tài liệu được chèn
vào bộ sưu tập và đó là tài liệu đã được tìm thấy.
Trong bước thứ hai,
chúng tôi đang tìm tài liệu để khi chúng tôi gọi tài liệu tìm DB,
vì vậy đây là tài liệu được lấy từ bộ sưu tập của tôi.
Sau đó, tôi yêu cầu nó để cập nhật các tài liệu với
điều này và sau đó bạn sẽ nhận thấy rằng nó nói tài liệu cập nhật và sau đó
ở đây nó in kết quả hoặc OPS và nó nói N là bằng
một số sửa đổi như một và nó đã được okay.
Sau đó, nó in ra các tài liệu cập nhật,
chúng tôi tìm thấy các tài liệu cập nhật ở đây và đó là những gì được in ra ở đây,
và lưu ý đặc biệt rằng mô tả đã được cập nhật.
Sau đó, cuối cùng, nó đã bỏ bộ sưu tập.
Vì vậy, chúng ta thấy cách ứng dụng này chạy và có thể sử dụng các
mô-đun nút mà chúng tôi thực hiện và sau đó thực hiện các hoạt động cơ sở dữ liệu khác nhau.
Với điều này, chúng tôi hoàn thành bài tập này.
Trong bài tập này tôi đã chứng minh cho bạn cách bạn sẽ tương tác với
máy chủ MongoDB của bạn từ ứng dụng nút của bạn.
Chúng tôi đã thực hiện module node riêng của chúng tôi ở đây và sau đó sử dụng nó
trong ứng dụng node của chúng tôi bằng cách đóng gói
một số hoạt động cơ sở dữ liệu vào module node đó.
Đây là thời điểm tốt để bạn thực hiện một cam kết Git với
nút tin nhắn MongoDB ví dụ phần hai.