노드를 구성합니다.MongoDB가 있는 js/Express API

이 강좌에서 도서 모음 API를 만들 것입니다. 도서 읽기 업데이트와 삭제를 만들거나 CRUD 작업을 간단하게 수행할 수 있습니다.

This tutorial is aimed at beginners so there will be some additional explanations and links to sources that might be helpful.


필요한 도구:

  • Node.js
  • Insomnia

  • MongoDB - 무료 계정 만들기(설치 불필요)

  • Visual Studio Code 또는 원하는 텍스트 편집기.
  • 먼저 MongoDB를 설정하면 1분의 시간이 걸리고 코드를 작성하는 데 집중할 수 있습니다.

    This step doesn't require a credit card and the free tier is more than enough for our project!


    MongoDB 계정에 로그인하고 그룹을 만듭니다.
    너는 같은 지역을 선택할 필요가 없다. 너에게 적합한 것을 마음대로 선택해라.이것은 본 강좌에서 결코 중요하지 않다.

    클러스터 생성 후 컬렉션으로 이동
    방금 빈 계정을 만들었을 수 있으므로 다음과 같은 메시지가 표시됩니다.

    클릭하여 내 데이터 추가
    • Create Database - if you already have databases in your cluster.

    데이터베이스를 Books API, 컬렉션을 Books로 명명합니다.
    우리는 데이터베이스를 위해 새로운 사용자를 만들기만 하면 완성된다.
    왼쪽의 "안전"에서 "데이터베이스 액세스"로 이동하여 새 사용자를 추가합니다

    사용자 이름과 강력한 비밀번호를 입력하면 "books user"라는 이름을 사용합니다.

    The user setup is fine for this scale of project, but if you go further with this, take a look at the MongoDB docs and set up user roles accordingly.


    축하합니다. 데이터베이스와 데이터베이스 사용자를 만들었습니다.
    우리는 모두 준비가 다 되었다. 적당한 위치에 단말기를 열어 재미있는 부분으로 들어가자!
    먼저 프로젝트에 대한 폴더를 만듭니다.
    mkdir books-api
    cd books-api
    
    지금 가방을 초기화합니다.json
    npm init
    
    패키지 이름, 버전 설명 등을 요구받을 것입니다. enter 키를 누르면 모든 내용을 기본 상태로 유지할 수 있습니다.
    이제 필요한 모든 종속성을 설치합니다.
    npm install express mongoose cors dotenv --save
    
    노드몬이라는'dev'의존항이 하나 더 있습니다. 변경 사항을 저장하면 자동으로 서버를 다시 시작합니다.
    npm install --save-dev nodemon
    
    원하는 텍스트 편집기에서 항목 열기 - 추천VSC
    우선 하나를 만듭니다.gitignore 를 붙여넣습니다.
    # Dependency directories
    node_modules/
    jspm_packages/
    
    # dotenv environment variables file
    .env
    .env.test
    

    the file *.gitignore does what the name implies, it ignores certain folders and files when we push our project to git. In this case we want to ignore node_modules and the .env file.*


    터미널에 다음 내용 입력
    git init
    
    초기화git.

    You don't need to use git, but I recommend it for practical reasons and you will eventually need to learn to use it anyway.


    앱이라는 파일을 만듭니다.js 및 다음을 입력합니다.
    const express = require("express");
    
    const app = express();
    const port = process.env.PORT || 5000;
    
    app.listen(port, () => {
      console.log(`Server running on port: ${port}`);
    });
    
    터미널에서 응용 프로그램을 실행하려면:
    node app.js
    
    서버가 시작되고 실행되어야 합니다. 터미널에서 보셔야 합니다Server running on port: 5000.
    브라우저에서 http://localhost:5000/ 로 이동하면 메시지를 볼 수 있습니다 Cannot GET /응용 프로그램에서 이 문제를 해결합시다.js 행 추가:
    app.get('/', (req, res) => {
        res.send("Hello World!")
    })
    
    파일을 저장하고 서버를 다시 시작해야 합니다.터미널에서 ctrl + c 를 눌러 서버를 종료하고 다시 실행합니다 node app.js.
    페이지를 새로 고침합니다(http://localhost:5000/.
    우리의 서버는 작동할 수 있고, 우리는 모델, 루트와 컨트롤러를 실현하기 시작할 수 있다.그러나 매번 변경된 후에 서버를 다시 시작하고 다시 실행할 필요가 없다면 훨씬 쉬울 것이다.이것이 바로 우리의 개발 의존Hello World!이 우리를 돕는 곳이다.
    자동으로 서버를 재부팅하기 때문에 한 번만 실행하고 잊어버리면 됩니다.듣기에 괜찮다!
    포장 안.json은 다음과 같이 스크립트nodemon에 다음 행을 추가합니다.
    "scripts": {
      "dev": "nodemon app.js"
    }
    
    이제 터미널에서 실행할 수 있습니다 "dev": "nodemon app.js".

    응용 프로그램 내.js.
    이 항목을 삭제하려면 다음과 같이 하십시오.
    app.get('/', (req, res) => {
        res.send("Hello World!")
    })
    
    그리고 이렇게 우리의 의존 항목을 가져옵니다.
    const mongoose = require("mongoose");
    const cors = require("cors");
    
    MongoDB를 연결해야 합니다. 우선 브라우저에 들어가서 클라우드에서 집단을 열어야 합니다. 연결 문자열을 얻어야 합니다. npm run dev 단추를 누르면

    다음 단계에서 연결 응용 프로그램을 클릭하면 다음 화면이 표시됩니다.

    연결 문자열을 복사하고 프로그램을 되돌려줍니다.VSC의 js입니다.
    다음 내용을 입력하여 MongoDB에 대한 연결을 만듭니다.

    Its important that the connection string is the one you copied from MongoDB Cloud. It won't work with the one below


    mongoose.connect(
      `mongodb+srv://books-user:<password>@cluster0.qvwwc.gcp.mongodb.net/<dbname>?retryWrites=true&w=majority`,
      { useNewUrlParser: true, useUnifiedTopology: true }
    );
    
    connect를 암호로 바꾸고(MongoDB에서 사용자를 만드는 데 사용하는 암호), <password><dbname>로 바꿉니다.
    이것은 우리books를 세울 절호의 기회다.프로젝트 루트 디렉터리에 dotenv 라는 파일을 만들어서 이 점을 실현하고 다음 코드를 추가합니다.
    DB_USER=db_user
    DB_PASS=db_pass
    

    Where db_user is your database username and db_pass is your database password.


    이제 응용 프로그램으로 돌아갑니다.js는 연결 문자열에서 사용자 이름과 비밀번호를 바꿉니다. 다음과 같습니다.

    Don't forget to require and configure dotenv


    require("dotenv").config();
    
    mongoose.connect(
      `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@cluster0.qvwwc.gcp.mongodb.net/books?retryWrites=true&w=majority`,
      { useNewUrlParser: true, useUnifiedTopology: true }
    );
    
    지금 우리는 코스와 우리의 도서 노선을 추가해야 한다.
    우리의 최종 응용 프로그램.js는 다음과 같습니다.
    const express = require("express");
    const mongoose = require("mongoose");
    const cors = require("cors");
    
    const book = require("./routes/book.routes");
    
    const app = express();
    const port = process.env.PORT || 5000;
    
    require("dotenv").config();
    
    mongoose.connect(
      `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@cluster0.qvwwc.gcp.mongodb.net/books?retryWrites=true&w=majority`,
      { useNewUrlParser: true, useUnifiedTopology: true }, () => {
          console.log('MongoDB Connected')
      }
    );
    
    app.use(cors());
    app.use(express.json());
    app.use(express.urlencoded({ extended: true }));
    app.use("/books", book);
    
    app.listen(port, () => {
      console.log(`Server running on port: ${port}`);
    });
    
    프로젝트의 루트 디렉터리에 .env, controllersmodels 폴더를 만듭니다.routes 폴더에서 책이라는 파일을 만들 것입니다.모델js를 입력하고 다음을 입력합니다.
    const mongoose = require('mongoose')
    
    const Schema = mongoose.Schema;
    
    const BookSchema = new Schema ({
        title: {type: String, required: true, max: 100},
        author: {type: String, required: true},
        year: {type: Number, required:true},
    });
    module.exports = mongoose.model("Book", BookSchema);
    
    이것은 우리의 도서 모형이다.model 폴더에 새 파일을 만들고 책의 이름을 붙입니다.컨트롤러.js 및 다음을 입력합니다.
    const Book = require("../models/book.model");
    
    exports.book_create = (req, res, next) => {
      const book = new Book({
        title: req.body.title,
        author: req.body.author,
        year: req.body.year,
      });
    
      book.save((err) => {
        if (err) {
          return next(err);
        }
        res.send("Book created successfully!");
      });
    };
    
    controllers 폴더에 새 파일을 만들고 책으로 명명합니다.노선js 다음 코드를 입력합니다.
    const express = require("express");
    const router = express.Router();
    
    const book_controller = require("../controllers/book.controller");
    
    router.post("/create", book_controller.book_create);
    
    module.exports = router;
    
    우리 서버는 오픈 업 불면증 (또는 Postman) 을 실행하고 있습니다.
    새 POST 요청을 작성하고 본문에서 양식 URL 인코딩을 선택하고 원하는 필드를 입력합니다.요청은 다음과 유사해야 합니다.

    지금 우리는 우리의 데이터베이스를 검사해서 그것이 확실히 만들어졌는지 확인합시다.

    이렇게 해서 우리의 첫 번째 노선이 완성되었다.
    이제 우리는 나머지 기능만 실현할 수 있다.

    ID로 책 가져오기


    책에 있어요.노선js에서 다음을 추가합니다.
    router.get("/:id", book_controller.book_details);
    
    책에 있어요.컨트롤러.회사 명
    exports.book_details = (req, res) => {
      Book.findById(req.params.id, (err, book) => {
        if (err) return next(err);
        res.send(book);
      });
    };
    
    다음과 같이 불면증에 새 GET 요청을 저장하고 생성합니다.
    GETroutes, 그중http://localhost:5000/books/book_id은 데이터베이스에 있는 MongoDB 클라우드에서 얻을 수 있는 id입니다.
    요청은 다음과 비슷해 보입니다.

    모든 책 가져오기


    책에 노선을 추가합니다.노선js:
    router.get("/", book_controller.all_books);
    
    책에 있어요.컨트롤러.회사 명
    exports.all_books = (req, res) => {
      Book.find({}, (err, book) => {
        if (err) return next(err);
        res.json(book);
      });
    };
    
    Save and lets test our route (저장하고 경로를 테스트하도록 함), book_id 에서 GET 요청을 만들려면 소장하고 있는 모든 책을 받아야 합니다. 예를 들어

    매뉴얼 업데이트


    책에 노선을 추가합니다.노선js:
    router.put("/:id/update", book_controller.book_update);
    
    책에 있어요.컨트롤러.회사 명
    exports.book_update = (req, res) => {
      Book.findByIdAndUpdate(req.params.id, { $set: req.body }, (err, book) => {
        if (err) return next(err);
        res.send("Book Udpated.");
      });
    };
    
    라우팅을 테스트하기 위해 Discoming에서 PUT 요청을 작성합니다.
    PUThttp://localhost:5000/books주체는 URL 인코딩 형식을 사용해야 한다

    우리는 또 하나의 노선이 있다. 그것은 바로:

    책 삭제


    책에 노선을 추가합니다.노선js:
    router.delete("/:id/delete", book_controller.book_delete);
    
    책에 있어요.컨트롤러.회사 명
    exports.book_delete = (req, res) => {
      Book.findByIdAndRemove(req.params.id, (err) => {
        if (err) return next(err);
        res.send("Book Deleted");
      });
    };
    
    다음 그림과 같이 불면증에서 다른 요청을 만듭니다.
    삭제http://localhost:5000/books/id_of_book_to_be_updated/update확인하기 위해서 우리는 우리의 MongoDB 클라우드 데이터베이스를 검사할 수 있습니다. 우리는 모든 것이 예상대로 작동하는 것을 볼 수 있습니다!
    만약 이것이 매우 재미있고 이런 강좌를 더 많이 보고 싶다면 아래나 위의 평론에서 나에게 알려주세요.

    좋은 웹페이지 즐겨찾기