Loopback4에서 MongoDB에 연결하는 방법에 대해 알아봅니다.

 

 

 

0. 사전 준비

 

Loopback4 CLI를 미리 준비합니다.

 

다음 명령어를 통해 lb4 프로젝트를 생성한 뒤 dotenv 패키지를 설치합니다.

 

> lb4 project-name
> cd project-name
> npm i dotenv

 

프로젝트 폴더 내 .env 파일을 생성하고 다음 예시에 맞게 MongoDB 접속 정보를 작성합니다.

 

# MongoDB Connection Info
MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_DB_NAME=admin
MONGO_USER=admin
MONGO_PASS=admin

 

 

 

1. MongoDB Connector 설치.

 

MongoDB 연결을 위해 커넥터를 먼저 설치합니다. 다음 명령어로 Loopback MongoDB Connector를 설치합니다.

 

> npm i loopback-connector-mongodb

 

 

 

 

2. Model 생성.

 

DB에 사용될 Model을 생성합니다. CLI를 사용하면 간단하게 Model을 생성할 수 있습니다. 다음 명령어를 사용해 Model을 생성합니다. 

 

> lb4 model

 

 

위와 같이 프롬프트를 따라 필요한 필드를 생성하는 작업을 수행하면 ./src/models/user.model.ts 파일이 자동으로 생성됩니다.

 

 

 

3. DataSource 생성.

 

앞서 생성한 모델을 이용해 DataSource를 생성할 차례입니다. 다음 명령어를 통해 DataSource를 생성합니다.

 

> lb4 datasource

 

 

원하시면 프롬프트에 접속 정보를 입력하셔도 됩니다. 위의 명령을 수행하고 나면 ./src/datasources/db.datasource.ts 파일이 생성되며 전 앞서 설정한 dotenv를 이용해 접속 정보를 설정해 두었습니다.

 

import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
import {juggler} from '@loopback/repository';
import 'dotenv/config';

const config = {
  name: 'db',
  connector: 'mongodb',
  url: '',
  host: process.env.MONGO_HOST,
  port: process.env.MONGO_PORT,
  user: process.env.MONGO_USER,
  password: process.env.MONGO_PASS,
  database: process.env.MONGO_DB_NAME,
  useNewUrlParser: true
};

// Observe application's life cycle to disconnect the datasource when
// application is stopped. This allows the application to be shut down
// gracefully. The `stop()` method is inherited from `juggler.DataSource`.
// Learn more at https://loopback.io/doc/en/lb4/Life-cycle.html
@lifeCycleObserver('datasource')
export class DbDataSource extends juggler.DataSource
  implements LifeCycleObserver {
  static dataSourceName = 'db';
  static readonly defaultConfig = config;

  constructor(
    @inject('datasources.config.db', {optional: true})
    dsConfig: object = config,
  ) {
    super(dsConfig);
  }
}

 

 

 

4. Repository 생성

 

Repository는 Model과 DataSource를 연결해주는 역할을 합니다. DB에 액세스 하기 위해선 앞서 만든 User 클래스에 대한 Repository를 생성해야 합니다. 다음 명령어를 통해 Repository를 생성합니다.

 

> lb4 repository

 

 

위 명령을 수행하면 자동으로 ./src/repositories/user.repository.ts가 생성됩니다.

 

 

 

5. Controller 생성

 

이제 우리의 엔드포인트를 생성할 차례가 되었습니다. 다음 명령어를 통해 controller를 생성합니다.

 

> lb4 controller

 

 

이번 예시에는 자동으로 추가해주는 CURD를 사용합니다. 위 명령을 수행하면 ./src/controllers/user.controller.ts가 자동으로 생성됩니다. 

 

 

 

6. 실행 및 테스트

 

이제 직접 유저를 생성해 봅시다. 다음 명령어를 통해 지금까지 만든 Loopback4 프로젝트를 실행시켜 보세요.

 

> npm start

 

이제 localhost:3000/ 으로 이동해 봅시다. 다음과 같은 화면을 확인할 수 있습니다.

 

 

Loopback4는 우리가 작성한 controller에 맞게 자동으로 API 스펙과 Explorer를 생성시켜 줍니다. 스펙은 천천히 확인하시고 explorer로 이동해 유저를 하나 생성해 봅시다.

 

Explorer화면에서 우리의 모든 엔드포인트를 조회할 수 있습니다.

 

 

한번 유저를 생성해 봅시다. Post /users를 클릭합니다.

 

 

Explorer에서 해당 엔드포인트에 대한 모든 정보를 확인할 수 있습니다. Input예시와 Output예시도 있으며 심지어 직접 테스트해 볼 수도 있습니다. 좌측 상단의 Try it out를 클릭합니다.

 

RequestBody에 적당한 값을 입력 한 뒤 Execute 버튼을 클릭합니다.

 

{ "email": "testuser@test.com", "password": "testuserpassword", "rgs_dt": "2020-11-12T06:21:33.035Z", "last_login_dt": "2020-11-12T06:21:33.035Z", "status": "N" }

 

Execute를 클릭하면 바로 아래에 Response 영역이 생성되며 Curl 명령어 및 응답 결과를 확인할 수 있습니다.

 

 

실제 제대로 들어갔는지 이번엔 Get명령을 통해 유저를 불러와 보도록 하겠습니다. Get /users로 이동해 동일하게 Try it out을 클릭해 유저를 조회해 보세요.

 

 

생성한 유저 정보를 정상적으로 불러오는 것을 확인할 수 있습니다.

 

 

 

 

 

반응형

+ Recent posts