NodeJS 및 MongoDB 연결

창고 개발에 들어가려면 서버 사이드 코드와 데이터베이스를 사용할 수 있어야 합니다.JavaScript를 사용한다면 Node와 유행하는 NoSQL 데이터베이스인 MongoDB를 사용할 가능성이 높습니다.
본고는 당신이 이미 모든 방법의 기본 지식을 습득했다고 가정합니다.여기서 주요 주제는 어떻게 Node와 Mongo가 서로 대화를 할 수 있는지입니다.

1단계: MongoDB 웹 사이트 방문


새 사용자로 로그인하거나 등록해야 합니다.간단한 첫걸음으로 우리는 이미 동력을 얻었다.

2단계: 클러스터 생성 및 연결


사이트에 클러스터가 없는 경우 를 생성해야 합니다.나는 이미 한동안 분류를 하지 않았기 때문에, 나는 확실하지는 않지만, 나는 그것이 자동으로 당신에게 하나를 만들라고 알려줄 것이라고 생각한다.
없으면 걱정하지 마세요. 아래 그림에서 화면 어딘가에 녹색 단추가 있습니다.'새 그룹 만들기'라고 쓰여 있습니다.내 건의는 내가 어떤 설정도 가지고 놀지 않았고, 집단에 비용을 지불하고 싶지 않기 때문에, 기본 설정을 보류하고, 무료 집단을 만드는 것만 확보하면 된다는 것이다.

지금 집단이 있거나, 집단이 있다면, 화면은 위의 그림과 같아야 한다.다음은 그룹 이름 아래의 작은 연결 단추를 눌러야 합니다.그것은 아래에 이 화면을 표시할 것이다.
중간에 있는 옵션을 누르면 응용 프로그램에 연결된다고 쓰여 있습니다.

좋아, 우리는 사이트에서 거의 완성하지 못할 거야.이 연결 팝업 메뉴를 실행하는 첫 번째 단계 - 드라이버를 선택하고 (본문을 읽고 있는 경우 노드일 수 있음) 버전이 적합한지 확인하십시오.우리가 노드 14에 있기 때문에, 나는 너희들이 모두 안전하게 3.6 이상의 버전의 옵션을 선택했다고 가정한다.
그리고 "복제"단추를 누르면 긴 문자열을 복사합니다. 이것이 바로 응용 프로그램이 데이터베이스에 실제로 접근하는 방식입니다.실제 비밀번호로 바꾸기<password>, 실제 데이터베이스 이름으로 바꾸기<database>가 필요합니다.바꾸어야 할 수도 있습니다 <username>. 그러나 보통 문자열을 복사하기 전에 자동으로 삽입됩니다.

3단계: MongoClient 설정


지금 우리는 반드시 당신의 응용 프로그램 코드에 들어가야 합니다.서버 코드가 어디에 있든지 간에 Node와 Mongo 사이의 연결을 만드는 클라이언트가 필요합니다.이것은 나의 프로젝트 디렉터리의 간단한 표시이며, 내가 그 안에 표시할 코드이다.
-client-> (front-end code)
-server
  |__db
  |  |_client.js
  |  |_index.js
  |
  |__server.js
  |__.env
우선 client.js를 살펴보자. 왜냐하면 이것은 우리가 연락을 맺어야 할 첫 번째 부분이기 때문이다.
import dotenv from 'dotenv';
import { MongoClient } from 'mongodb';

dotenv.config();

const client = new MongoClient(
  process.env.MONGODB_URI,
  {
    useUnifiedTopology: true,
  },
);

// Close the connection after the server is shut down
(async () => {
  await client.connect();

  // 'CTRL + C' -> 'SIGINT' means signal interrupt i.e. server shut down
  process.on('SIGINT', () => {
    client.close().then(() => {
      console.info('SIGINT received: DB connection is closing');

      // Avoid plugging up ports - ensures all processes are stopped
      process.exit(0);
    });
  });
})();

export default client;
네, 여기 조금 있습니다. 우리 나누어 봅시다.
우선 우리는 수입 상품이 좀 있다.dotenv 마지막 복사를 저장하기 위한 문자열만 가져와서 사용합니다.저희가 집단에서 몬고의 사이트에서 복사한 긴 문자열은 제 디렉터리 구조에서 보신 .env 에 저장됩니다.dotenv.config() 본문.env에서 설명한 환경 변수만 사용할 수 있습니다.process.env.MONGODB_URI 우리가 복사한 실제 문자열로 바꿀 수 있습니다.따라서 .env를 설정하고 싶지 않으면 그럴 필요가 없다.
현재MongoClient의 도입은 그의 역할에 대해 말하지 않아도 알 수 있다. 이것이 바로 우리가 어떻게 연결을 맺는지이다.const client = 부분은 우리가 새로운 MongoClient 을 성명하고 일부 파라미터를 전달하는 부분이다.
  • 우선 연결 문자열입니다(필요한 경우 여기에 붙여넣을 수 있습니다)
  • 추가 옵션 전달 대상 - 여기 저희는 전달만 합니다useUnifiedTopology: true
  • import dotenv from 'dotenv';
    import { MongoClient } from 'mongodb';
    
    dotenv.config();
    
    const client = new MongoClient(
      process.env.MONGODB_URI,
      {
        useUnifiedTopology: true,
      },
    );
    
    솔직히 말해서, 나는 왜 우리를 도왔는지 백 퍼센트 이해하는 것이 아니다.이것은Mongo's Reference Page on it입니다.나는 가장 기본적인 의미에서 말하자면, 이것은 미래의 갱신을 더욱 쉽게 내딛는 한 걸음인 것 같다.근데 내가 완전히 틀렸나봐.
    댓글로 useUnifiedTopology: true에 대한 이해를 알려주세요!
    네, 다음 코드입니다.
    분명히 우리는 우리가 만든 useUnifiedTopology 을 내보냈기 때문에 이 점을 한쪽에 두자.
    현재 이 코드의 대부분은 비동기 iLife이다.그것의 목적은 연결을 만들고 서버가 닫힐 때 이 연결을 닫는 것이다.그중의 평론은 이미 일부 부분을 밝히는 데 도움이 될 것이다.
  • MongoClient 객체 = > client 에서 사용할 수 있는 방법으로 연결을 기다립니다.간단해.
  • 그리고 서버에서 connect()를 얻으면 데이터베이스 연결을 닫습니다.우리 부모님이 청소를 가르쳐 주셨기 때문에, 이것은 단지 우리 방을 위한 것이 아니다.
  • // Close the connection after the server is shut down
    (async () => {
      await client.connect();
    
      // 'CTRL + C' -> 'SIGINT' means signal interrupt i.e. server shut down
      process.on('SIGINT', () => {
        client.close().then(() => {
          console.info('SIGINT received: DB connection is closing');
    
          // Avoid plugging up ports - ensures all processes are stopped
          process.exit(0);
        });
      });
    })();
    
    export default client;
    

    4단계: 당신의 신호를 사용합니다


    지금 우리는 어떻게 이것client을 사용하여 우리를 연결합니까?이것은 나의 client 중의 한 방법이다.
    import client from './client';
    
    // GOOD
    export const addNewUser = async (newUser) => {
      try {
        return await client.db('throwaway').collection('users').insertOne(newUser);
      } catch (err) {
        throw new Error(err);
      }
    };
    
  • 파일에서 고객 가져오기
  • 그리고try/catch 블록에서 간단하게 사용하세요.
  • db/index.js
  • client
  • .db(<NAME OF YOUR DATABASE>)
  • .collection(<NAME OF YOUR COLLECTION>)
  • 여기서 주의해야 할 것은 .<METHOD YOU NEED> 클라이언트에서 요청한 대상입니다.그것은 이미 하나의 대상이기 때문에, 나는 직접 그것을 newUser 방법에 전달할 수 있다.

    계속 전진하다


    제 경험에 의하면 MongoDB는 사물의 격식에 대해 매우 까다롭다. 특히 CRUD에 전달하는 방법, 예를 들어 insertOne, insertOne().
    이것은 읽기, 쓰기, 삭제, 업데이트를 시도하는 데이터의 작업이 정확한지 확인하는 데 매우 중요하다.

    연습


    데이터가 필요한 항목을 제시하는 것도 걱정하지 말고 이 데이터가 어떤 모습일지 걱정하지 마세요. 몬고DB의 샘플 데이터만 사용하세요.
    집단을 만들면 기본적으로 샘플 집합을 다운로드할 수 있다.
    이렇게 하면 색인처럼 프로젝트 구조를 신속하게 구축할 수 있다.html, 기본 CSS와 본고에서 보신 서버 사이드 코드입니다.어떻게 데이터를 정확하게 전달하고 클라이언트 요청을 서버에 전달하는지, 심지어 서버 코드에 하나find(0)를 정의하여 DB 방법에 전달하고 업데이트하는지 확인하기만 하면 된다.
    임무를 완수하는 시간이 대부분의 일보다 더 도움이 된다!

    좋은 웹페이지 즐겨찾기