Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Xây dựng API REST với Express, Node và MongoDB

Thực hiện theo với hướng dẫn này để thêm MongoDB Atlas làm kho lưu trữ dữ liệu cho các ứng dụng của bạn, bằng cách tạo NodeJS và Express Web Rest API.

Kiến trúc dự án

Bạn có thể khám phá dự án đầy đủ trong repo GitHub sau:

  • Chi nhánh chính - Dự án đã hoàn thành
  • Chi nhánh sơ khai - Điểm bắt đầu để làm theo hướng dẫn này

Express cho phép chúng tôi tạo một máy chủ cấp giữa chạy giữa các cấp độ back-end.

Máy chủ Express.js cũng kết nối với cụm Atlas MongoDB thông qua trình điều khiển Node.js. Nếu bạn muốn tìm hiểu thêm về MongoDB và Node.js, hãy đọc bài viết sau.

Cuối cùng, ứng dụng mặt trước của chúng tôi sẽ được viết trong React để sử dụng các điểm cuối API REST được lưu trữ trên máy chủ Express.js. Ứng dụng này là một ứng dụng giống như Tinder cho cơ sở dữ liệu sample_airbnb, chứa thông tin trên các danh sách khác nhau, có sẵn như là một phần của bộ dữ liệu mẫu bạn có thể tải vào cụm Atlas.

Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Người dùng có thể vuốt các thẻ danh sách để lưu hoặc thả chúng và nhấn nút giống như trên mạng để thêm lượt thích. Ngoài ra, một cú nhấp chuột đôi sẽ hiển thị chi tiết về thẻ niêm yết cụ thể được trình bày.

Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Cây dự án

Dưới đây là các tệp chính trong dự án:

  • người phục vụ/
    • db
      • conn.js
    • tuyến đường
      • record.js
    • server.js
    • config.env
  • app/listings/
    • public/
    • src/
      • App.js
      • App.css
      • index.js

Thư mục máy chủ của máy chủ lưu trữ ứng dụng máy chủ Express.js và tất cả các phụ thuộc của nó. Các tệp chính ở đây là:

  • DB DB/Conn.JS,: phơi bày kết nối toàn cầu với cơ sở dữ liệu Atlas bằng cách xuất khách MongoDB mà bất kỳ mô -đun nào khác cũng có thể sử dụng.
  • Các tuyến đường/record.js của Nhật Bản: phơi bày các điểm cuối API REST và thực hiện logic kinh doanh của họ đối với cụm Atlas.
  • Máy chủ của máy chủ
  • Config config.env: Tệp cấu hình giữ chi tiết chuỗi kết nối Atlas.

Thư mục ứng dụng/danh sách trên mạng là nơi mã ứng dụng React Front-end nằm. Các tệp chính ở đây là:

  • App App.js/app.css,: Mã phản ứng đầu tiên để hiển thị ứng dụng và tương tác với các điểm cuối API REST Express REST.
  • Chỉ số.

Thiết lập dự án

Đầu tiên, bạn sẽ cần triển khai một cụm Atlas. Bạn có thể làm theo hướng dẫn bắt đầu với Atlas để tìm hiểu cách tạo tài khoản Atlas miễn phí, tạo cụm đầu tiên của bạn và đưa chuỗi kết nối của bạn đến cơ sở dữ liệu.

Khi chúng tôi có sẵn cụm Atlas, chúng tôi có thể tải dữ liệu mẫu bằng cách nhấp vào [...]> tải dữ liệu mẫu tải. Khi dữ liệu được tải, chúng tôi đã sẵn sàng để nhân bản Chi nhánh dự án Stub:

git clone -b stub 
:mongodb-developer/mongodb-express-rest-api-example.git

Hãy cùng đi đến thư mục của máy chủ trên mạng của dự án và cài đặt các gói cần thiết:

cd mongodb-express-rest-api-example/server
npm install

Bây giờ, chúng tôi đã sẵn sàng kết nối máy chủ Express của chúng tôi với cụm Atlas MongoDB.

Kết nối với MongoDB Atlas

Khi bạn định vị chuỗi kết nối của mình, hãy tạo tệp config.env trong thư mục máy chủ. Ở đó, gán một biến Atlas_uri mới Giá trị của chuỗi kết nối. Thay thế

cd mongodb-express-rest-api-example/server
npm install
5 và
cd mongodb-express-rest-api-example/server
npm install
6 bằng tên người dùng và mật khẩu cơ sở dữ liệu của bạn. Sau khi hoàn thành, tệp của bạn sẽ trông tương tự như tệp dưới đây.

ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

Tiếp theo, Mở Máy chủ/DB/Conn.JS và thêm việc triển khai hàm ConnectToServer từ đoạn trích bên dưới.

const { MongoClient } = require("mongodb");
const connectionString = process.env.ATLAS_URI;
const client = new MongoClient(connectionString, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

let dbConnection;

module.exports = {
  connectToServer: function (callback) {
    client.connect(function (err, db) {
      if (err || !db) {
        return callback(err);
      }

      dbConnection = db.db("sample_airbnb");
      console.log("Successfully connected to MongoDB.");

      return callback();
    });
  },

  getDb: function () {
    return dbConnection;
  },
};

Đối tượng chính Mô-đun này xuất ra là biến

cd mongodb-express-rest-api-example/server
npm install
7, sẽ giữ đối tượng cấp cơ sở dữ liệu "
cd mongodb-express-rest-api-example/server
npm install
8". Thông qua đối tượng này, chúng tôi sẽ có thể truy cập bất kỳ bộ sưu tập nào trong cơ sở dữ liệu đó hoặc thay đổi bối cảnh của nó sang cơ sở dữ liệu khác. Trong hướng dẫn này, chúng tôi sẽ chỉ sử dụng một cơ sở dữ liệu có tên là ____ ____18.

Thêm các tuyến đường API REST

Phần Express.js chính trong hướng dẫn này là để hiển thị các tuyến API REST để thực hiện đọc, tạo, cập nhật và xóa các hoạt động cho ứng dụng niêm yết của chúng tôi. Điều này có thể được mở rộng cho logic kinh doanh ứng dụng phức tạp hơn vì trường hợp sử dụng của bạn yêu cầu.

Tệp sẽ lưu trữ các tuyến đường là --- Máy chủ/ROUTE/ROUTER/RECORD.js. Nó sử dụng tính năng Bộ định tuyến Express:

const express = require("express");

// recordRoutes is an instance of the express router.
// We use it to define our routes.
// The router will be added as a middleware and will take control of requests starting with path /listings.
const recordRoutes = express.Router();

Đọc tuyến đường

Tuyến đường đọc sẽ được sử dụng khi đường dẫn

ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
0 trên phương thức GET được gọi. Nó sẽ sử dụng một bộ sưu tập.find () để truy vấn bộ sưu tập
ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
1 của chúng tôi cho 50 danh sách có sẵn đầu tiên:

// This section will help you get a list of all the documents.
recordRoutes.route("/listings").get(async function (req, res) {
  const dbConnect = dbo.getDb();

  dbConnect
    .collection("listingsAndReviews")
    .find({}).limit(50)
    .toArray(function (err, result) {
      if (err) {
        res.status(400).send("Error fetching listings!");
     } else {
        res.json(result);
      }
    });
});

Mã gửi lại kết quả được đặt dưới dạng phản hồi API.

Tạo tuyến đường

Tuyến tạo sẽ ghi lại một cú vuốt của trận đấu trên một bộ sưu tập của các trận đấu. Phần thân của phương thức bài đăng này sẽ trình bày một người dùng

ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
2 và hướng đã được quét và
ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
3 để tạo tài liệu của trận đấu trên mạng.

// This section will help you create a new document.
recordRoutes.route("/listings/recordSwipe").post(function (req, res) {
  const dbConnect = dbo.getDb();
  const matchDocument = {
    listing_id: req.body.id,
    last_modified: new Date(),
    session_id: req.body.session_id,
    direction: req.body.direction
  };

  dbConnect
    .collection("matches")
    .insertOne(matchDocument, function (err, result) {
      if (err) {
        res.status(400).send("Error inserting matches!");
      } else {
        console.log(`Added a new match with id ${result.insertedId}`);
        res.status(204).send();
      }
    });
});

Việc lưu được thực hiện thông qua phương thức Collection.insertone () với Match Match được xây dựng sẵn.

Bạn cũng có thể sử dụng chèn để chèn nhiều tài liệu cùng một lúc.

Cập nhật tuyến đường

Tuyến bản cập nhật cập nhật trường LIKE LIKES trên một đối tượng niêm yết. Điều này được thực hiện thông qua một phương thức bài viết:

// This section will help you update a document by id.
recordRoutes.route("/listings/updateLike").post(function (req, res) {
  const dbConnect = dbo.getDb();
  const listingQuery = { _id: req.body.id };
  const updates = {
    $inc: {
      likes: 1
    }
  };

  dbConnect
    .collection("listingsAndReviews")
    .updateOne(listingQuery, updates, function (err, _result) {
      if (err) {
        res.status(400).send(`Error updating likes on listing with id ${listingQuery.id}!`);
      } else {
        console.log("1 document updated");
      }
    });
});

Phương thức sẽ sử dụng phương thức thu gom.UpdateOne () với $ Inc trên trường giống như trên mạng để tăng các lượt thích.

Xóa tuyến đường

Bất cứ khi nào một danh sách bị loại bỏ, chúng tôi có thể xóa nó khỏi cơ sở dữ liệu để nó không xuất hiện nữa. Điều này được thực hiện thông qua tuyến đường xóa.

// This section will help you delete a record.
recordRoutes.route("/listings/delete/:id").delete((req, res) => {
  const dbConnect = dbo.getDb();
  const listingQuery = { listing_id: req.body.id };

  dbConnect
    .collection("listingsAndReviews")
    .deleteOne(listingQuery, function (err, _result) {
      if (err) {
        res.status(400).send(`Error deleting listing with id ${listingQuery.listing_id}!`);
      } else {
        console.log("1 document deleted");
      }
    });
});

Tuyến ở đây bao gồm tham số

ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
4. Đây là ID của danh sách sẽ bị xóa thông qua Collection.DeleteOne ().

Bây giờ chúng tôi có mọi thứ tại chỗ, chúng tôi có thể khởi chạy máy chủ:

npm start
[nodemon] starting `node server.js`
Successfully connected to MongoDB.
Server is running on port: 5000

Thiết lập mặt trước

Ứng dụng React của chúng tôi bao gồm chủ yếu là tệp và lớp React App.js.

cd mongodb-express-rest-api-example/server
npm install
0

Chúng tôi sẽ sử dụng một số mô-đun của bên thứ ba, như thẻ phản ứng, thẻ, cho phép chúng tôi tạo ra các gạch và đồ họa vuốt. Những người đó sẽ tương tác với các chức năng ứng dụng để xử lý các sự kiện như trên ONSWIPE, trên mạng HandlelikeClick, showdetails, và thành phần của thành phần, để hiển thị dữ liệu về tải trang).

Các chức năng của Onswipe, trên mạng, HandlelikeClick, thành phần và thành phần sẽ sử dụng thư viện Axios để thực hiện các yêu cầu API HTTP REST đến Máy chủ Express của chúng tôi. Những người đó, đến lượt nó, sẽ thực hiện hành động cần thiết trên cụm Atlas của chúng tôi.

Bây giờ chúng tôi có thể bắt đầu ứng dụng trong một thiết bị đầu cuối mới (quy trình máy chủ phải vẫn chạy):

cd mongodb-express-rest-api-example/server
npm install
1

Kiểm tra ứng dụng

Khi tất cả các thành phần đang hoạt động, chúng tôi có thể mở HTTP: // LocalHost: 3000 URL và chúng tôi sẽ thấy ứng dụng Listinder của chúng tôi được tải:

Ứng dụng chínhCà thẻHiển thị chi tiết
Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?
Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?
Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Tương tác với các viên gạch bằng cách hoán đổi chúng sẽ gọi các tuyến đường nhanh của chúng tôi và thực hiện các hoạt động ứng dụng.

cd mongodb-express-rest-api-example/server
npm install
2

Atlas Ứng dụng Dịch vụ webhooks thay thế rõ ràng

Các dịch vụ ứng dụng Atlas, Cơ sở dữ liệu di động MongoDB và các dịch vụ đám mây phát triển, cung cấp một sự thay thế mạnh mẽ và có thể mở rộng cho máy chủ Express tự lưu trữ.

Tạo một ứng dụng rất dễ dàng với một tầng miễn phí hào phóng. Trong ứng dụng đó, bạn có thể tạo các dịch vụ HTTP với các điểm cuối Webhook để thực hiện các hoạt động tương tự như các tuyến đường Express, mà không cần phải duy trì và mã hóa nhiều mã Boilerplate. Các dịch vụ này được tối ưu hóa để truy cập cụm Atlas và sẽ mở ra một thế giới mới về các cơ hội như các chức năng đám mây, nhà cung cấp Auth, GraphQL và Triggers.

Hãy để cổng một tuyến đường đến một webhook. Chúng tôi sẽ bắt đầu bằng cách tạo một dịch vụ HTTP trong UI ứng dụng Realm mới được tạo.

Tạo dịch vụ HTTP

Điều hướng đến phần Dịch vụ của bên 3D và nhấp vào loại dịch vụ HTTP.

Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Tạo webhook cho dịch vụ đó

Là một phần của việc xác định dịch vụ, chúng tôi cần định cấu hình phương thức HTTP mà webhook này sẽ sử dụng và logic chức năng liên quan của nó.

Hướng dẫn does rest api combine with mongodb? - phần còn lại api có kết hợp với mongodb không?

Mã chức năng liên quan:

cd mongodb-express-rest-api-example/server
npm install
3

Bây giờ chúng ta có thể sử dụng URL Webhook trực tiếp trong ứng dụng React. Thêm phần sau vào lớp ứng dụng trong App.js:

cd mongodb-express-rest-api-example/server
npm install
4

Wow, điều đó dễ dàng hơn và có thể mở rộng hơn nhiều!

Bản tóm tắt

Sử dụng Express như một phần mềm trung gian back-end là một thiết kế ngăn xếp MongoDB phổ biến. Express là nhẹ và dễ tiếp cận cho các hoạt động API của JSON và REST. MongoDB Atlas là một cơ sở dữ liệu tài liệu có thể mở rộng và linh hoạt như một dịch vụ và tạo nên một người bạn đồng hành hoàn hảo để thể hiện trong nhiều ngăn xếp như MERN, MEAD và MEVN.

Phải nói rằng, Atlas App Services và Webhooks là sự thay thế mạnh mẽ cho tầng nhanh, di chuyển nhu cầu quản lý một máy chủ Express và các phụ thuộc của nó tại chỗ.

Câu hỏi thường gặp

Làm cách nào để sử dụng MongoDB với JS Express?

Làm cách nào để tạo API REST bằng Node Express và Mongo?

REST API có sử dụng cơ sở dữ liệu không?

Phần còn lại có nghĩa là chuyển trạng thái đại diện và đó là một kiến ​​trúc được sử dụng để thiết kế các ứng dụng máy khách-máy khách. Với API REST, bạn đang nhận được một đại diện cho dữ liệu được yêu cầu được lưu trữ trong cơ sở dữ liệu.With a Rest API, you're getting a representation of the requested data stored in a database.

Postman có thể kết nối với MongoDB không?

Bây giờ bạn sẽ cần phải định cấu hình các bộ sưu tập Postman của mình để sẵn sàng sử dụng bộ sưu tập MongoDB của bạn.Bắt đầu bằng cách mở tab Biến trong bộ sưu tập Postman.Bạn sẽ cần điền vào các giá trị cho từng biến.Nếu bạn không muốn các biến được lưu trong bộ sưu tập của mình, hãy sử dụng cột Giá trị hiện tại.. Start by opening the Variables tab in the Postman collection. You will need to fill in the values for each variable. If you don't want the variables to be saved in your collection, use the Current value column.

Làm thế nào tìm nạp dữ liệu từ API đến MongoDB?

API, Desription: Req.thân hình.Desription, liên kết: Req.thân hình...
Đầu tiên nhập mô -đun HTTPS để gửi yêu cầu HTTPS GET ..
Tạo một mảng để giữ các khối đệm ..
Khi tất cả các khối được nhận hoàn toàn, hãy liên kết những khối này ..
Lưu dữ liệu được liên kết trên DB ..

Làm cách nào để tạo API REST trong Node JS với MongoDB?

Các bước để xây dựng API REST bằng cách sử dụng MongoDB của Node Express..
Bước 1: Kết nối với MongoDB Atlas ..
Bước 2: Thêm các tuyến đường API REST ..
Bước 3: Thiết lập mặt trước ..
Bước 4: Kiểm tra ứng dụng ..