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-alias
를 import
해주는 것으로 경로가 등록된다.
import 'module-alias/register';
이제 등록한 경로를 사용할 수 있다.
import {validationMiddleware} from "@middleware/validation.middleware";
import RequestWithUser from "@interface/requestWithUser.interface";
import UserBodySchemaDto from "@dto/UserBodySchema.dto";