개발환경 설정

Untitled

package.json

{
  "name": "typeorm_study",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node dist/app.js",
    "dev": "nodemon src/app.ts",
    "build": "tsc -p ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/node": "^16.11.6",
    "express": "^4.17.1",
    "mysql": "^2.18.1",
    "reflect-metadata": "^0.1.13",
    "ts-node": "^10.4.0",
    "tsc": "^2.0.3",
    "typeorm": "^0.2.38",
    "typescript": "^4.4.4"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "target": "es5",                                
    "module": "commonjs",     
    "rootDir": "./src",                    
    "moduleResolution": "node",                 
    "outDir": "./dist",                           
    "esModuleInterop": true,                   
    "forceConsistentCasingInFileNames": true,        
    "strict": true,                            
    "strictPropertyInitialization": false,
    "skipLibCheck": true,
    "emitDecoratorMetadata": true,
    "types": ["node"]
  }
}

DB 생성

mysql -uroot

폴더 구조

Untitled

entity/users.ts

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

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

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    age: number;
}

app.ts

import rm from "reflect-metadata";
import { createConnection, Connection, Repository } from "typeorm"
import { User } from "./entity/users";

async function hello(): Promise<User> {
    const connection = await createConnection({
        type: 'mysql',
        host: "localhost",
        port: 3306,
        username: "root",
        password: "1234",
        database: "typeormtest",
        synchronize: true,
        entities: [
            "entity/*.ts",
            __dirname + "/entity/*.ts"
        ]
    });

    const userRepo = connection!.getRepository(User);

    const user1 = new User();
    user1.firstName = "Garden";
    user1.lastName = "Lee";
    user1.age = 20;

    await userRepo.save(user1);

    const user2 = new User();
    user2.firstName = "Timber";
    user2.lastName = "Saw";
    user2.age = 25;

    await userRepo.save(user2);

    const user3 = new User();
    user3.firstName = "Selena";
    user3.lastName = "Gomez";
    user3.age = 30;

    await userRepo.save(user3);

    const allUsers = await userRepo.find();
    console.log("all users: ", allUsers);

    const firstUser = await userRepo.findOne(allUsers[0].id);  // find by id
    console.log("first user:", firstUser); 

    const selena = await userRepo.findOne({ firstName: "selena" });
    console.log("selena:", selena);

    return user1;
}

hello();