기본 CRUD 작업을 위한 빠른 백엔드 구축

대학에 다닐 때, 나는 어쩔 수 없이 웹 개발과 웹 디자인 사이에서 선택을 해야만 했다.이 결정은 매우 쉽다. 왜냐하면 나는 웹 사이트를 예쁘게 보이는 것은 대다수 개발자들이 할 수 있는 일이라고 생각하기 때문이다.그러나 한 사이트를 완전히 기능화?이것은 더욱 복잡한 일이다. 이것은 내가 받아들이고 싶은 도전이다.
제 인터넷 기술 수업에서 자바스크립트의 기초 지식을 배우고 전단을 사용한 후에 사이트 후단의 깊은 수역에 들어갈 때가 되었습니다.나는 Node를 사용하여MongoDB 데이터베이스와 상호작용하는 RESTful 루트를 만들도록 파견되었다.js와 Express.js.처음에 나는 곤혹스러웠지만 같은 절차로 몇 가지 작은 프로젝트를 세운 후에 나는 이 지역사회와 내가 배운 지식을 공유하는 것이 더 편하다고 느꼈다.
그러니 깊이 파고들자!!
우리가 알아야 할 첫 번째 일은 노드다.js, 나는 이미 그것에 관한 글을 한 편 썼으니, 가서 보아라. 그러면 너는 왜 그리고 그것을 어떻게 사용하는지 알게 될 것이다.노드를 설치한 후 터미널 설치에 필요한 의존항을 사용할 것입니다. 이 예는 dotenv, expressmongodb입니다.다행히도, 내가 사용하는 템플릿에는 이미 모든 기능이 설치되어 있지만, 프로젝트에 이러한 기능이 없다면, 터미널에 npm install express 을 입력해서 다른 패키지에 같은 문법을 반복하면 됩니다.
두 번째 단계는 응용 프로그램을 MongoDB에 연결하는 데이터베이스 URL을 포함하는 .env 파일을 만드는 것이다.이 파일은 제출에 포함시키고 싶지 않기 때문에 추적이 취소될 것입니다.이것은 더욱 안전한 이유에서 비롯된 것이다. 왜냐하면 우리는 왜 낯선 사람이 우리의 데이터베이스에 방문하기를 원하기 때문이다. 그렇지?
DB_CLIENT_URL=databaseurl
세 번째 단계는 우리의 배치에 들어가는 것이다.js 파일과 프로젝트 설정을 설명합니다.이 예에서는 포트, 데이터베이스 URL, 이름 및 컬렉션 이름이 있습니다.이 정보를 다른 파일에 넣지 않고 여기에 두면 저희 사이트는 어느 곳에서든 바꾸지 않고 쉽게 유지보수할 수 있습니다.
export default {
  port: process.env.PORT || 3000,
  db: {
    clientURL: process.env.DB_CLIENT_URL,
    name: "sample_airbnb",
    collectionName: "listingsAndReviews"
  }
}
보시다시피 실제 데이터베이스 URL을 볼 수 없습니다.이 프로젝트에 대해, 나는MongoDB에서 온 Airbnb 데이터베이스 예시를 사용했지만, 만약 내가 다른 데이터베이스를 사용하고 싶다면, 나는 거기에서 이름과 집합을 변경할 수 있으며, 이것은 전체 프로젝트에 적용될 것이다.
네 번째 단계는db/conns (데이터베이스 연결) 폴더를 만들고 그 중에서 클라이언트를 만드는 것입니다.js 파일, 응용 프로그램에 연결하기 위해 다시 사용할 수 있는 몬고 클라이언트를 포함합니다.이곳은 우리가 이전에 설치한 mongodb 소프트웨어 패키지를 사용하는 곳이다.참고 이 파일은 이 폴더의 고유한 파일이며 이제부터 다른 모든 파일은 서버 폴더에 계속 존재합니다.
import { MongoClient } from "mongodb";
import config from "./config.js";

const client = new MongoClient(config.db.clientURL);

client.connect()
  .then(() => {
    console.info("MongoDB Client 🏃🏾‍♂️");
  })
  .catch((err) => {
    console.error("Error starting MongoDB Client", err.message);
    // Exit process with failure
    process.exit(1);
  });
process.on("SIGINT", () => {
  client.close().then(() => {
    console.info("MongoDB Client disconnected");
    process.exit(0);
  });
});
export default client;
일단 Google Mongo 클라이언트가 데이터베이스에 성공적으로 연결되면, 우리는 계속해서 공유기에서 루트를 만들 수 있습니다.js 파일.먼저 API에 연결된 테스트 경로부터 시작하겠습니다.구성에서 컨텐트를 가져와야 합니다.js, 고객.js와 우리Routerexpress에서 왔다.
import Router from "express";
import config from "./config.js";
import client from "./db/conns/client.js";

// create collection variable to reduce code duplication
const collection = client
.db(config.db.name)
.collection(config.db.collectionName);

const router = new Router();

// localhost:3000/api
router.get("/", (_, res) => {
    res.send("Hello from API router");
});

export default router;
이 공유기를 이용하기 위해서, 우리는 그것을 색인으로 가져와야 한다.js 파일,express를 프레임워크로 사용하면 우리의 생활을 더욱 수월하게 할 수 있습니다.Express는 개발자에게 HTTP 서버를 만드는 데 필요한 모든 도구를 제공합니다. JSON 형식으로 데이터를 수신하고 발송할 수 있습니다.
import express from "express";
import config from "./config.js";
import router from "./router.js";

const app = express();

// json middleware allows to send and receive JSON data
app.use(express.json());

app.get("/", (_, res) => {
  res.send("Hello World");
});

app.use("/api", router);
서버를 실행하려면 터미널에서 npm start 을 입력한 다음 자원 관리자로 이동해서 http://localhost:3000/api 을 입력하면 "API 공유기에서 온 안녕하세요"를 표시합니다.현재, 우리의 테스트 노선이 운행 중이며, 우리는 계속해서 나머지 노선을 만들 수 있다.이 항목에서는 기본 CRUD 작업인 생성, 읽기, 업데이트 및 삭제를 사용합니다.그 중 일부 노선에서 우리는 사용해야 한다Insomnia.이 플랫폼들은 우리가 브라우저에서 데이터를 보내는 것이 아니기 때문에 JSON 데이터를 보내는 것을 허용할 것이다.우리가 이 정보를 보내는 방식은 요청 주체에 있을 것이다.
첫 번째 노선부터 시작해서 목록을 만들 것입니다.
// post a new listing
router.post("/listings", async (req,res) => {
    const newListing = await collection.insertOne(req.body);
    res.json(newListing);
})
두 번째 노선은 모든 목록을 읽을 수 있습니다.이 예에서find 방법의 {}는 모든 목록을 가져왔지만, 우리는 {}에 우리가 원하는 필터를 추가할 수 있습니다.이 필터들은 MongodB 언어를 사용해야 한다는 것을 기억하십시오. 이것은 루트의 후속 업데이트와 다르며, 선택할 수 있는 필터가 있습니다. 이 경우 자바스크립트 필터를 사용합니다.
// get all listings
router.get("/listings", async (_, res) => {
    const listingsData = await collection.find({}).toArray();
    res.json(listingsData);
});
세 번째는 목록 id를 가져와 목록을 업데이트합니다.주체에서 우리는 '유효 하중' 을 보낼 수 있는데, 이것은 우리의 목록의 업데이트 데이터이다.
// update a listing
router.put("/listings/", async (req, res) => {
    const updatedListing = await collection.updateOne({ _id: req.body.id},
    { $set: req.body.payload });
    res.json(updatedListing);
})
CRUD 작업을 완료하는 네 번째 단계는 목록의 id를 사용하여 목록을 삭제하는 것입니다.
// delete a listing
router.delete("/listings/:id", async (req, res) => {
    const deletedListing = await collection.deleteOne({ _id: req.params.id });
    res.json(deletedListing);
});
이 항목은 특정한 목록을 읽고, 한 목록에서 모든 평론을 얻으며, 한 목록에서 평론을 만들고, 업데이트하고, 삭제하는 등 더 많은 경로가 있다.참고로 project repo입니다.
이러한 기본 경로는 데이터베이스에서 CRUD 작업을 수행할 수 있도록 합니다. 비록 이것은 서버 쪽 프로젝트일 뿐이지만, 클라이언트에 연결하는 방법을 알고 있다면, 이것은 완전한 창고 사이트를 만드는 방법을 제공할 것입니다.노드js와 Express.js는 다른 서버 언어(예를 들어 PHP)를 알지 못하는 상황에서 서버를 만들고 사용하는 것을 가능하게 합니다.

좋은 웹페이지 즐겨찾기