Nút Mongodb js xóa theo id

Tôi có hai bộ sưu tập tài liệu tham khảo cả hai bộ sưu tập cùng nhau. Một trong những bộ sưu tập là người dùng và bộ sưu tập khác là dự án

Vì vậy, người dùng có thể thêm dự án vào bộ sưu tập dự án, sau đó một trong những loại người dùng được gọi là người giám sát có thể thêm nhân viên vào dự án và id dự án được lưu vào bộ sưu tập người dùng được gọi là tài liệu nhân viên trên bộ sưu tập dự án

Vì vậy, thực sự tôi cần phải làm khi quản trị viên xóa một người giám sát khỏi bộ sưu tập người dùng, nó sẽ xóa tất cả các dự án được tạo bởi id của người dùng giám sát bằng với các tài liệu đã thêmBy đã xóa khỏi bộ sưu tập người dùng

Vì vậy, vấn đề của tôi là khi tôi thực hiện quy trình này, tôi cần xóa tất cả id dự án bằng với projectId bộ sưu tập người dùng. đó là một mảng và tôi đã cố gắng làm điều này nhiều lần nhưng tôi không thể tìm ra giải pháp. Tôi sẽ cung cấp tất cả các mã nguồn. Mà tôi đã tạo ra cho dự án này

Bạn đang tìm thứ gì đó có chứa "m" ở đâu đó (toán tử '%' của SQL tương đương với biểu thức chính quy' '.*'), chứ không phải thứ có "m" neo vào đầu chuỗi

Ghi chú. MongoDB sử dụng các biểu thức chính quy mạnh hơn "THÍCH" trong SQL. Với các biểu thức chính quy, bạn có thể tạo bất kỳ mẫu nào mà bạn tưởng tượng

Xóa là một trong những thao tác CRUD trong MongoDB. Sử dụng cầy mangut với NodeJS và MongoDB cung cấp nhiều phương thức để xóa dữ liệu khỏi bộ sưu tập. Một trong những phương pháp này trong removeById. Đây là một chức năng đơn giản được sử dụng để xóa tài liệu khỏi bộ sưu tập bằng cách sử dụng giá trị của trường _id. Như bạn có thể tưởng tượng, đây là một lệnh thường được sử dụng và là một lệnh tốt cần ghi nhớ nếu bạn thường xuyên làm việc với Mongoose. Chúng tôi sẽ trình bày cách sử dụng lệnh với hy vọng rằng bạn có thể áp dụng một số mã cho vấn đề của mình

điều kiện tiên quyết

  • Bạn nên có mức hiểu biết cơ bản về NodeJS, MongoDB, Mongoose và cách tất cả các công nghệ này tương tác để làm theo hướng dẫn này
  • Bạn nên hiểu npm (trình quản lý gói nút) và cách cài đặt các gói
  • Bạn nên có một sự hiểu biết cơ bản về những gì phần mềm trung gian làm

hàm removeById trong Mongoose

Như tên gợi ý, phương thức removeById xóa tài liệu khỏi bộ sưu tập. Tất cả những gì chúng ta phải làm là truyền hàm id của tài liệu đó. Hãy hiểu làm thế nào chúng ta có thể sử dụng removeById trong cầy mangut

Trước hết, chúng ta cần một thể hiện của express

Thông thường, khi cần xóa tài liệu theo id, id sẽ được chuyển qua tham số. Chúng tôi sẽ làm chính xác điều này ví dụ của chúng tôi. Nhưng để truy cập phần thân của yêu cầu, chúng tôi cần một phần mềm trung gian. Chúng tôi sẽ sử dụng phần mềm trung gian phân tích cú pháp cơ thể

Để cài đặt phần mềm trung gian phân tích cú pháp cơ thể, hãy sử dụng các lệnh sau

npm cài đặt body-parser@1. 0. 2 --lưu

Sau khi cài đặt phần mềm trung gian body-parser, chúng ta có thể sử dụng nó trong tệp express của mình

Nhưng trước những điều này, chúng ta cần xác định các phụ thuộc ở đầu tệp tốc hành của mình

var express = require("express");

bodyParser = require("body-parser");

Chúng ta có thể sử dụng một phần mềm trung gian khác, ứng dụng. thông số

ứng dụng. param("collectionName", function(req, res, next, collectionName) {
  req. bộ sưu tập = db. bộ sưu tập(collectionName);
  return next();
});

Phần mềm trung gian này xác định rằng bất cứ khi nào mẫu đã cho xuất hiện trong URL, chúng tôi sẽ chọn một bộ sưu tập cụ thể. Sau đó, chúng tôi lưu bộ sưu tập đó làm thuộc tính của đối tượng yêu cầu

Bây giờ chúng ta có thể sử dụng phương thức removeById

ứng dụng. del("/bộ sưu tập/. tên bộ sưu tập/. id", function(req, res, next) {
  req. thu thập. removeById(yêu cầu. thông số. id, function(err, output) {
    if (err) {
      return next(err);
    }
    res.send(output === 1 ? { msg: "success" } : { msg: "error" });
  });
});

Bất cứ khi nào một URL, bắt đầu bằng 'bộ sưu tập', sau đó là tên bộ sưu tập và id của tài liệu, chức năng trên sẽ được kích hoạt. Sau đó, chúng tôi đã sử dụng req. bộ sưu tập để gọi phương thức removeById. Phương thức removeById có hai tham số – req. thông số. id và chức năng gọi lại

Yêu cầu. thông số. phương thức id chứa id của tài liệu được truyền dọc theo URL

Hàm gọi lại cũng có hai tham số - err và đầu ra. Trong phần thân, đầu tiên, chúng ta kiểm tra xem có lỗi hay không bằng cách sử dụng câu lệnh if. Nếu không có lỗi, chúng tôi kiểm tra giá trị của đầu ra. Nếu đầu ra bằng 1, hoạt động thành công, ngược lại, nó thất bại

Sự kết luận

Chúng tôi đã chỉ cho bạn một thời gian ngắn cách thiết lập ứng dụng cấp tốc có thể sử dụng chức năng Mongoose removeById bao gồm xử lý lỗi. Chúng tôi hy vọng bạn có thể áp dụng các đoạn trích mà bạn đã thấy ở đây vào ứng dụng của mình

Hiện tại không có phương thức nào gọi là deleteById() trong cầy mangut. Tuy nhiên, có phương thức deleteOne() với tham số là filter, cho biết tài liệu nào cần xóa. Chỉ cần chuyển _id thành filter và tài liệu sẽ bị xóa

Sử dụng một phương thức sơ thẩm

Bạn cũng có thể biến deleteById() thành tĩnh Mongoose trên lược đồ của mình, điều này sẽ biến deleteById() thành một chức năng trên mô hình của bạn như được hiển thị bên dưới