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을 클릭해 유저를 조회해 보세요.
생성한 유저 정보를 정상적으로 불러오는 것을 확인할 수 있습니다.
'Programming > Typescript' 카테고리의 다른 글
[LoopBack] 02. Loopback4와 Postgresql 연결하기 (0) | 2020.04.23 |
---|---|
[Typescript] 02. 모듈 (0) | 2020.04.22 |
[Typescript] 01. Typescript란? - Typescript개발 준비 (0) | 2020.04.20 |
[LoopBack] 01. 루프백 사용하기 (0) | 2020.04.13 |