Node를 사용하여 MongoDB를 설정하는 방법js와 Express?

21435 단어 expressmongodbnode
MongoDB은 크로스플랫폼의 document oriented database으로 가장 유행하는 NoSQL 데이터베이스 중의 하나이다.JSON과 유사한 문서에 데이터를 저장하여 처리하고 설정하기 쉽습니다.
이제 노드에서 Mongo 데이터베이스에 연결합니다.우리는 js 서버를 사용할 수 있습니다.
  • Mongo, 공식 운전사 npm package

  • Mongoose,nodejs
  • 중mongo의 우아한 대상 모델링 도구
    본 게시물에서 우리는 족제비를 사용할 것이다. 족제비는 다음과 같은 특성을 가지고 널리 알려져 있다.
  • 내장 데이터 자동 검증
  • 문서를 저장하기 전에 발생할 이벤트를 미리 정의합니다.
  • 데이터 정의 구조가 좋은 모델
  • 족제비가 빛나는 이유를 더 깊이 알고 싶다면 이 closed stackoverflow thread을 방문하거나 official Mongoose docs을 방문할 수 있다.

    Node Express 서버 시작


    계속하고 이 프로젝트에 새 폴더를 만듭니다.
    제작 서버의 기본 패키지를 추가하십시오. 저희는 어떤 세부 사항도 깊이 토론하지 않고 몬고 DB 실례를 저희 서버에 어떻게 연결하는지만 토론할 것입니다.
    yarn add express mongoose
    
    또는
    npm install express mongoose
    
    개발 환경의 개인 키인 dotenvnodemon을 안전하게 사용해서 save를 눌렀을 때 서버를 다시 시작해야 합니다.
    yarn add nodemon dotenv -D
    
    또는
    npm install nodemon dotenv --save-dev
    
    이제 루트 파일 index.js에서 함께 구성하겠습니다.명령줄에서 nodemon index.js을 실행하여 서버를 실행하거나 npm 스크립트를 생성할 수 있습니다.
    const express = require("express");
    const app = express();
    
    app.get("/", (req, res) => res.send("Server is up and running"));
    
    const PORT = process.env.PORT || 5000;
    app.listen(PORT, () => console.log(`Server is running on port ${PORT}`));
    
    우리는 항상 같은 페이지에 있다. 나는 우리가 쓰고자 하는 모든 코드를 이 Github Gist에 놓았다.만약 당신이 갇혔다면 언제든지 따라오세요.

    환경 변수 추가


    몬고를 연결할 때 GitHub 등 소스 오픈 플랫폼에 숨겨야 할 유용한 정보를 포함하는 연결 문자열을 제공해야 하기 때문에 dotenv이라는 패키지를 사용하여 환경 변수에 넣도록 합니다.
    따라서 루트 디렉터리에 .env이라는 파일을 만들고 다음 내용을 복사하여 붙여넣습니다.
    MONGO_PROD_URI=<prod key here>
    MONGO_DEV_URI=<dev key here>
    
    상응하는 전략을 탐색한 후에 우리는 실제 문자열을 여기에 놓을 것이다.마지막으로 서버에서 이 키를 사용할 수 있도록 index.js에 이 줄을 추가해야 합니다.
    require("dotenv").config();
    

    서버에 Mongose 추가


    우리는 이미 소프트웨어 패키지 mongoose을 설치했는데, 현재 우리는 index.js에 그것을 설치할 수 있다.
    const mongoose = require("mongoose");
    
    mongoose
      .connect(process.env.MONGO_PROD_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
      })
      .then(() => console.log("Database connected!"))
      .catch(err => console.log(err));
    
    이것은 노드 js에서mongodb에 연결하는 방법입니다. 또한 모든 useNewUrlParser, useUnifiedTopologyuseCreateIndex 옵션을 전달해야 합니다. 위 그림에서 보듯이 그렇지 않으면 컨트롤러에서 경고를 받을 수 있습니다.자세한 내용은 page on docs을 참조하십시오.
    그러나 MONGO_PROD_URIenv 변수에 문자열을 추가하지 않았기 때문에 데이터베이스를 사용하기 위한 문자열을 얻는 방법을 보여 주십시오.

    생산에서 사용


    우리는 클라우드에서 관리되는 몬고 데이터베이스, 즉 Mongo Atlas을 사용할 것이다.그들은 대부분의 항목을 충족시킬 수 있는 아낌없는 무료 사용 정책을 가지고 있다.
    그곳에 도착해서 계정을 만들면 같은 이름의 조직을 가지고 그 조직을 방문하고'새 프로젝트'를 눌러야 합니다.네가 할 때, 너는 모든 항목을 여기에 쌓을 것이다.제 계좌입니다.

    이제 절차에 따라 프로젝트를 만듭니다. 저는 아래에서 제 절차를 공유할 것입니다.

    이 데이터베이스에 접근할 사람이 당신을 제외하고는 없다면, 이 단계에서 프로젝트를 만들 수 있습니다.

    일단 이 페이지가 생기면 그룹 구축을 누르십시오.

    여기서 Javascript를 선택할 수 있습니다. 이것은 우리가 주목하는 언어이기 때문에 계속하십시오.

    가격 결정 부분이 왔습니다. 당신의 사용 상황에 따라 당신이 필요로 하는 것을 선택할 수 있습니다. 저는 공짜로 하나를 시작하겠습니다.

    그리고 모든 기본 설정을 선택하고 그룹 만들기를 누르십시오.

    집단이 만들어지고 있는 것을 보게 될 것입니다. 몇 분만 있으면 준비할 수 있습니다.

    일단 그것이 만들어지면, 너는 그것이 이렇다는 것을 보게 될 것이다.

    응용 프로그램의 연결 문자열을 가져오기 전에 우리는 두 가지 일을 해야 한다.
  • 데이터베이스 사용자 만들기
  • 데이터베이스 접근 허용
  • 첫 번째 단계에서는 왼쪽 사이드바로 이동하여 Database Access를 선택할 수 있습니다.

    그런 다음 를 클릭하여 새 데이터베이스 사용자를 추가할 수 있습니다.

    그런 다음 사용자에게 필요한 액세스 권한이 있는 암호 인증을 추가할 수 있습니다.나는 이 사용자를admin으로 명명하고 비밀번호를 제공했습니다. 이 절차를 수행한 후에 사용자 추가를 누르십시오.

    완료되면 다음과 같이 데이터베이스 액세스 목록에 사용자가 나타납니다.

    이제 두 번째 단계에서 우리는 인터넷이 우리의 데이터베이스에 접근하고 화이트리스트를 통해 우리의 IP 주소를 사용할 수 있도록 허용할 것이다.이렇게 하려면 사이드바의 네트워크 액세스 탭으로 이동한 다음 IP 주소 추가 를 클릭하면 다음과 같이 표시됩니다.

    우리의 응용 프로그램은 거의 인터넷에서 누구나 사용할 수 있기 때문에, 우리는 어디서든 접근할 수 있도록 선택하고, 우리의 접근 목록 항목은 0.0.0.0/0을 채울 것이다.그리고 확인을 눌러도 됩니다.

    이것은 설정하는 데 시간이 좀 걸릴 것입니다. 그러나 마지막으로 네트워크 접근 목록은 다음과 같습니다.

    완료 후 메인 그룹 페이지로 들어가 샌드박스에 연결합니다.연결을 누르면 데이터베이스에 연결하는 세 가지 방법을 얻을 수 있습니다.현재, 우리는 우리의 응용 프로그램을 연결하기 위해 연결 문자열이 필요합니다. 우리는 당신의 응용 프로그램을 연결할 것을 선택할 것입니다.

    여기에서 연결 문자열을 얻을 수 있습니다. 복사해서 붙여넣을 것입니다.환경 파일.

    문자열을 붙여넣습니다.환경 파일


    MONGO_PROD_URI=mongodb+srv://admin:<password>@cluster.mongodb.net/<dbname>?retryWrites=true&w=majority
    
    <password>을 위의 데이터베이스 접근에 설정한 비밀번호로 바꾸고 <dbname>을 데이터베이스에 이름을 붙이고자 하는 이름으로 바꾸십시오.
    이것이 바로 나의 족제비 부분에서 보이는 모습이다.
    mongoose
      .connect(process.env.MONGO_PROD_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
      })
      .then(() => console.log("Database connected!"))
      .catch(err => console.log(err));
    
    이제 save를 누르면 노드몬이 서버를 다시 불러옵니다.봤어, 데이터베이스 연결됐어?
    그렇지 않으면 몬고에서 잘못된 인증과 거대한 창고 추적을 받을 것입니다.
    MongoError: bad auth Authentication failed.
        at MessageStream.messageHandler (C:\Users\alexy\Desktop\learn\mongodb-setup\node_modules\mongodb\lib\cmap\connection.js:268:20)
        at MessageStream.emit (events.js:315:20)
        at processIncomingData (C:\Users\alexy\Desktop\learn\mongodb-setup\node_modules\mongodb\lib\cmap\message_stream.js:144:12)
        at MessageStream._write (C:\Users\alexy\Desktop\learn\mongodb-setup\node_modules\mongodb\lib\cmap\message_stream.js:42:5)
        at doWrite (_stream_writable.js:403:12)
        at writeOrBuffer (_stream_writable.js:387:5)
        at MessageStream.Writable.write (_stream_writable.js:318:11)
        at TLSSocket.ondata (_stream_readable.js:717:22)
        at TLSSocket.emit (events.js:315:20)
        at addChunk (_stream_readable.js:295:12)
        at readableAddChunk (_stream_readable.js:271:9)
        at TLSSocket.Readable.push (_stream_readable.js:212:10)
        at TLSWrap.onStreamRead (internal/stream_base_commons.js:186:23) {
      ok: 0,
      code: 8000,
      codeName: 'AtlasError'
    }
    
    그리고 걱정하지 마세요. 저도 이걸 얻었습니다. 이것은 제가 .env 문자열에서 잘못된 비밀번호를 찾았기 때문에 데이터베이스 사용자 비밀번호를 정확하게 제공했는지 확인하십시오. 잊어버리면 비밀번호를 변경하고 여기에 추가하십시오.또한 계정 비밀번호가 아닌 사용자 비밀번호를 사용해야 합니다.
    일단 우리가 이 점을 보게 되면, 이것은 우리의 데이터베이스가 이미 연결되었다는 것을 의미하며, 당신은 데이터를 추가하기 시작할 수 있습니다.
    Server is running on port 4444
    Database connected!
    

    몬고에 데이터 추가 테스트


    mongose를 사용하여 데이터를 추가하려면 먼저 모드를 설정해야 합니다. 그들의 Quick Start을 통해 모드에 대한 정보를 더 많이 알 수 있습니다.index.js에 추가합니다.
    const UserSchema = new mongoose.Schema({
      name: String,
      age: Number,
      isAdult: Boolean,
      joined: {
        type: Date,
        default: Date.now,
      },
    });
    
    const User = mongoose.model("users", UserSchema);
    
    지금 아래에 데이터를 좀 추가합니다.
    const newUser = new User({
      name: "Elliot Alderson",
      age: 23,
      isAdult: true,
    });
    
    newUser.save().then(() => console.log("Saved new user"));
    
    현재, 우리가save를 눌렀을 때, 이 대상은 우리의 데이터베이스에 저장되어 있으며, 당신은 컨트롤러에서 Saved new user을 볼 수 있습니다.컬렉션을 클릭하여 Atlas에서 데이터를 볼 수 있습니다.

    여기에서 데이터베이스에 저장된 newUser 대상을 볼 수 있습니다.

    개발에서 사용


    MongoDB를 로컬에 설치했는지 확인


    아직 MacWindows에 Mongo를 설치하지 않았다면 이 서면 안내서를 참조하십시오.비디오 자습서를 좋아하신다면 또는 의 안내서를 참조하십시오.
    설치 후, 셸에서 mongo -version을 실행하여 설치를 확인할 수 있으며, mongo 명령을 실행하여 셸을 통해 모든 로컬 몬고 데이터베이스에 접근할 수 있습니다.셸의 Mongo 사용에 대한 자세한 내용은 refer this으로 문의하십시오.

    배경현지 환경의 환경


    MONGO_DEV_URI=mongodb://127.0.0.1:27017/<dbname>
    
    <dbname>을 데이터베이스 이름으로 바꿉니다.
    지금 우리가 바꿔야 할 유일한 것은 개발 과정에서 우리의 환경 변수를 운행하는 것이다.그래서 우리의 족제비 설정에서 우리는 process.env.MONGO_DEV_URI이 아니라 process.env.MONGO_PROD_URI을 써야 한다.코드를 테스트하기 위해 nodemon index.js을 실행합시다.
    참고: 로컬에서 데이터베이스를 사용할 때 이 코드를 실행할 수 있지만 mongo shell 또는 Robo 3T 또는 Mongo Compass 같은 GUI 도구를 사용해야 합니다.
    나는 개인적으로 로봇 3T를 좋아한다. 왜냐하면 그것은 속도가 빠르고 성능이 좋기 때문이다.이것이 바로 내 로컬 몬godb의 데이터의 외관이다.here에서 다운로드할 수 있습니다.

    마지막


    오늘 새로운 것을 배웠거나 MongoDB를 서버에 추가할 때 시간을 절약할 수 있기를 바랍니다. 이전의 프로젝트와 물건을 처리할 필요가 없습니다.나는 너의 관점, 나에 대한 평론, 혹은 근처에서 너를 만나고 싶다.

    좋은 웹페이지 즐겨찾기