Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

타입스크립트와 typeorm과 postgresql을 쓰는 sql 예시 **

JBS 12 2023. 11. 1. 22:53

타입스크립트와 TypeORM을 사용하여 PostgreSQL 데이터베이스에 접속하고 SQL 쿼리를 수행하는 간단한 예제를 제시하겠습니다. 먼저, 프로젝트에 필요한 패키지를 설치해야 합니다.

1. 프로젝트 초기화 및 패키지 설치:

//터미널 
mkdir typeorm-postgresql-example
cd typeorm-postgresql-example
npm init -y
npm install typeorm reflect-metadata pg
npm install --save-dev typescript ts-node @types/node

 

2. tsconfig.json 파일 생성 및 설정:
//json
{
  "compilerOptions": {
    "target": "ES6",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "strict": true
  }
}

 

3. TypeScript 환경 설정:

src 폴더에 index.ts 파일을 생성하고 다음과 같이 코드를 작성합니다.
//typescript


// src/index.ts
import "reflect-metadata";
import { createConnection, Connection, Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

async function main() {
  const connection: Connection = await createConnection({
    type: "postgres",
    host: "localhost",
    port: 5432,
    username: "your_username",
    password: "your_password",
    database: "your_database",
    entities: [User],
    synchronize: true,
    logging: true,
  });

  const userRepository = connection.getRepository(User);

  const user = new User();
  user.name = "John Doe";

  await userRepository.save(user);

  const users = await userRepository.find();
  console.log("Users:", users);

  await connection.close();
}

main().catch(error => console.error("Error:", error));


이 코드는 TypeORM을 사용하여 PostgreSQL 데이터베이스에 연결하고, User 엔터티를 정의하며, 데이터베이스에 새 사용자를 추가하고 조회하는 간단한 예제입니다.

 

4. 실행:

TypeScript 소스 코드를 컴파일하고 실행합니다.

// bash
 
npx tsc
node dist/index.js
이 코드는 PostgreSQL 데이터베이스와 연결하고 사용자 데이터를 추가하고 조회합니다. 필요에 따라 TypeORM의 다양한 기능과 쿼리 빌더를 활용하여 데이터베이스 조작을 수행할 수 있습니다.


postgresql을 쓰는 sql 예시

 

PostgreSQL을 사용한 SQL 쿼리의 간단한 예시를 제공하겠습니다. 아래 예시에서는 users라는 테이블을 가정하고, 이 테이블에서 데이터를 조회하고 삽입하는 SQL 쿼리를 사용합니다.

1. 테이블 생성:

먼저, PostgreSQL 데이터베이스에서 users 테이블을 생성합니다.

// sql
CREATE TABLE users (
    id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL,
    email VARCHAR (355) UNIQUE NOT NULL
);


이 쿼리는 users 테이블을 생성하며, id를 기본 키로, username과 email을 고유(unique)하게 설정합니다.

2. 데이터 삽입:

사용자 데이터를 테이블에 삽입합니다.

// sql
INSERT INTO users (username, email) VALUES
    ('john_doe', 'john.doe@example.com'),
    ('jane_smith', 'jane.smith@example.com');


이 쿼리는 users 테이블에 두 명의 사용자를 추가합니다.

3. 데이터 조회:

사용자 데이터를 조회하는 SQL SELECT 문의 예시:

//sql
SELECT * FROM users;
이 쿼리는 users 테이블의 모든 데이터를 조회합니다.

4. 데이터 업데이트:

데이터를 업데이트하는 SQL UPDATE 문의 예시:

// sql
UPDATE users
SET email = 'updated_email@example.com'
WHERE username = 'john_doe';


이 쿼리는 users 테이블에서 username이 'john_doe'인 사용자의 이메일 주소를 업데이트합니다.

5. 데이터 삭제:

데이터를 삭제하는 SQL DELETE 문의 예시:

// sql
DELETE FROM users
WHERE username = 'jane_smith';


이 쿼리는 users 테이블에서 username이 'jane_smith'인 사용자를 삭제합니다.

위의 SQL 쿼리 예시는 PostgreSQL 데이터베이스에서 테이블을 생성하고 데이터를 삽입, 조회, 업데이트, 삭제하는 데 사용됩니다. 실제 프로젝트에서는 데이터베이스와 테이블 구조를 프로젝트의 요구 사항에 따라 설계하고, 복잡한 쿼리를 작성할 것입니다.


express.js에서 쓰는 postgresql

 

Express.js를 사용하여 PostgreSQL 데이터베이스와 상호 작용하는 방법은 다음과 같습니다. 이것은 간단한 예시이며, PostgreSQL 데이터베이스에 연결하고 데이터를 조회하는 과정을 설명합니다.

1. 프로젝트 초기화 및 패키지 설치:

먼저, Express.js 프로젝트를 초기화하고 필요한 패키지를 설치합니다.

// bash 
mkdir express-postgresql-example
cd express-postgresql-example
npm init -y
npm install express pg

 

2. Express.js 애플리케이션 설정:

Express.js 애플리케이션을 설정하고 PostgreSQL 데이터베이스에 연결합니다.

// javascript
 
const express = require('express');
const { Client } = require('pg');

const app = express();
const port = 3000;

const client = new Client({
  user: 'your_username',
  host: 'localhost',
  database: 'your_database',
  password: 'your_password',
  port: 5432,
});

client.connect();

app.get('/', (req, res) => {
  // PostgreSQL 쿼리 실행 예시
  client.query('SELECT * FROM users', (error, result) => {
    if (error) {
      console.error('Error:', error);
      res.status(500).send('Internal Server Error');
    } else {
      const users = result.rows;
      res.json(users);
    }
  });
});

app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

 

 

이 코드에서는 Express.js 애플리케이션을 설정하고, pg 패키지를 사용하여 PostgreSQL 데이터베이스에 연결합니다. / 엔드포인트에서 PostgreSQL 쿼리를 실행하여 users 테이블의 데이터를 가져와 클라이언트에 응답합니다.

3. 실행:

Express.js 애플리케이션을 실행합니다.

//bash
 
node app.js
이제 Express.js 애플리케이션은 PostgreSQL 데이터베이스와 상호 작용하여 데이터를 조회하고 웹 서버를 통해 클라이언트에 제공합니다. 이것은 간단한 예시이며, 프로젝트의 요구 사항에 따라 더 복잡한 쿼리와 라우팅을 구현할 수 있습니다.


 

 


 nest.js에서 쓰는 mysql 


 
Nest.js에서 MySQL 데이터베이스와 상호 작용하려면 typeorm 라이브러리를 사용하는 것이 일반적입니다. typeorm는 다양한 데이터베이스와 연동하는 데 사용되는 ORM(Object-Relational Mapping) 라이브러리이며, TypeScript와의 통합을 제공합니다.

아래는 Nest.js에서 typeorm를 사용하여 MySQL 데이터베이스에 연결하고 기본적인 CRUD(Create, Read, Update, Delete) 작업을 수행하는 예시 코드입니다. 먼저 프로젝트를 초기화하고 필요한 패키지를 설치해야 합니다.

1. 프로젝트 초기화 및 패키지 설치:

Nest.js 프로젝트를 초기화하고 필요한 패키지를 설치합니다.

// bash
 nest new nest-mysql-example
cd nest-mysql-example
npm install @nestjs/typeorm typeorm mysql2

 

2. TypeORM 설정:

ormconfig.js 파일을 프로젝트 루트 폴더에 생성하고 MySQL 데이터베이스 연결 정보를 설정합니다.

// javascript
 module.exports = {
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'your_username',
  password: 'your_password',
  database: 'your_database',
  entities: [__dirname + '/**/*.entity{.ts,.js}'],
  synchronize: true,
};

 

3. Entity(엔터티) 생성:

엔터티를 정의하여 데이터베이스 테이블과 연결합니다. src 폴더 내에 user.entity.ts 파일을 생성하고 다음과 같이 코드를 작성합니다.

// typescript
 import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

 

4. Nest.js 서비스 및 컨트롤러 생성:

users 서비스와 컨트롤러를 생성하여 MySQL 데이터베이스와 상호 작용합니다.

// bash
 
nest generate service users
nest generate controller users

 

 


생성된 users.service.ts 파일을 열어 MySQL 데이터베이스와 상호 작용하는 메서드를 구현합니다.

//typescript

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {}

  async findAll(): Promise<User[]> {
    return await this.usersRepository.find();
  }

  async create(user: User): Promise<User> {
    return await this.usersRepository.save(user);
  }
}

 

5. Nest.js 컨트롤러 업데이트:

users.controller.ts 파일을 열고 컨트롤러 메서드를 업데이트합니다.

// typescript
Copy code
import { Controller, Get, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';
import { User } from './user.entity';

@Controller('users')
export class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  async findAll(): Promise<User[]> {
    return this.usersService.findAll();
  }

  @Post()
  async create(@Body() user: User): Promise<User> {
    return this.usersService.create(user);
  }
}

 

 

6. 애플리케이션 실행:

Nest.js 애플리케이션을 실행합니다.
 
//bash
npm run start


이제 Nest.js 애플리케이션은 MySQL 데이터베이스와 상호 작용하고 /users 엔드포인트를 통해 사용자 데이터를 조회하고 추가할 수 있습니다. 이 예제는 간단한 시작 예시이며, 프로젝트의 요구 사항에 따라 데이터베이스 모델과 작업을 확장할 수 있습니다.