Albus log - 1

Postgresql 연결

Node 에서 Postgresql을 연결하려면 pg 모듈을 사용하면 된다.

import { Pool } from "pg";

const pool: Pool = new Pool();

export const createUserTable = async () => {
  const queryUserText =
    `CREATE TABLE IF NOT EXISTS
      users (
        id UUID PRIMARY KEY,
        username VARCHAR(30) NOT NULL,
        password VARCHAR(30) NOT NULL,
        email VARCHAR(40) NOT NULL UNIQUE, 
      )`;

  try {
    await pool.query(queryUserText);
    await pool.query('COMMIT');
    console.log("success create user Table");
  } catch (e) {
    await pool.query('ROLLBACK');
    console.error(e);
  } finally {
    pool.end();
  }
};

export const dropTables = async (name) => {

  const queryText = `DROP TABLE IF EXISTS ${name}`;

  try {
    const res = await pool.query(queryText);
    console.log(res);
    await pool.query('COMMIT');
  } catch (e) {
    await pool.query('ROLLBACK');
    console.error(e);
  } finally {
    pool.end();
  }
};

pool.on('remove', () => {
  console.log('client removed');
  process.exit(0);
});

로컬 path 개선

다음과 같은 상대경로를 개선해 절대 경로로 바꾸었다.

import '../../../exceptions'

해결법

  • tsconfig.json의 paths 추가
  • module-alias 모듈 추가후 package.json에 path 추가

tsconfig.json 설정

{
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@controllers/*": ["controllers/*"],
      "@dto/*": ["dto/*"],
      "@exceptions/*": ["exceptions/*"],
      "@interface/*": ["interface/*"],
      "@middleware/*": ["middleware/*"]
    },
    ...
  }
}

이 설정은 컴파일은 가능하게 해주나, 경로를 변경시켜주진 않는다.

webpack으로 실질적 변경을 많이 하는 것 같으나, module-alias 모듈로 쉽게 경로 설정을 할 수 있다.

module-alias

설치

yarn add module-alias

package.json

{
	...,
  "_moduleAliases": {
    "@controllers": "src/controllers",
    "@dto": "src/dto",
    "@exceptions": "src/exceptions",
    "@interface": "src/interface",
    "@middleware": "src/middleware"
  },
  ...
}

시작 파일에 import

시작하는 파일에 가장 윗부분에 module-aliasimport해주는 것으로 경로가 등록된다.

import 'module-alias/register';

이제 등록한 경로를 사용할 수 있다.

import {validationMiddleware} from "@middleware/validation.middleware";
import RequestWithUser from "@interface/requestWithUser.interface";
import UserBodySchemaDto from "@dto/UserBodySchema.dto";
김땡땡's blog

김땡땡's blog

김땡땡