리코딩 : 프로젝트 회고

리코딩 : 4주 프로젝트 회고록! 2nd

BreezeBm 2021. 1. 25. 22:55

프로젝트 2주차에 접어들...다!

프로젝트 로고

1. 스택

 스택 선정에 대한 이야기가 많이 오갔다. 이번 기회에 "새로운 스택을 사용하는 것" VS "배웠던 내용을 최대한으로 끌어올리는 것"! 백엔드의 선택은 "새로운 스택을 사용하자" 였다. 스택을 선정하기 위해 많은 아이템들이 나왔다. 최근에 가장 관심이 있었던 "NestJS"🐈, "Typescript"🟦 를 해보고 싶었다. 4주라는 시간이 충분해 보였기 때문에 많은 욕심을 내고 싶었지만, 현실적으로 프로젝트를 완성하기 위해서는 타협이 필요했다. 최종적으로 백엔드에서는 "Typescript""TypeORM"을 사용하기로 결정했다! (앞으로 다가올 운명은 모른채....)

 

이번 프로젝트 잘 부탁해!


2. Typescript

새롭게 배우는 언어! 설렘을 가득안고 공식문서와 강의들을 찾아봤다. 처음에는 타입을 일일이 다 지정해 주어야 하는게 너무 번거 롭게 느껴졌다. JavaScript보다 자유도가 많이 낮다는 느낌을 받았다. 규칙이 확실하게 존재하고, 약속을 정확하게 지켜야했다. 그만큼 사용자가 더 노력해서 코드를 작성해야 했다. 하지만 이 규칙들이 나중에는 타입스크립트의 큰 힘이자 장점이 될 것 같다. (이후 컴파일에게 호되게 당한 1인)

let name: string = 'Harry';
let age: number = 22;
let arr: [] = ['a', 'b'];
let any: any = 22

function (): void {
  console.log("Hello")
}

3. TypeORM

이전에 sequelize를 ORM을 사용했었다. 개인적으로 sequelize에서는 개인적으로 1 : N, N : N 관계들을 설정할 때 조금 불편함을 느꼈다. 하지만 TypeORM은 직관적으로 관계 설정을 할 수 있어서 매력적으로 다가왔다. 그리고 Entity안에 static을 통해서 메소드를 작성해서 꺼내 사용할 수 있다! 정말 더욱더 매력적으로 느껴졌다. Sequelize에서는 controller안에 원하는 메소드 find, findOne, findOrCreate 등등을 작성하지만, TypeORM은 Entity안에 작성하고 꺼내오기만 하면 된다!

(조인 할때 조금 헤메긴 했다..)

@Entity()
export default class Comment extends BaseEntity {
	@PrimaryGeneratedColumn()
	id: number;

	@Column()
	writer: string;

	@Column({ nullable: true })
	comment: string;

	@CreateDateColumn()
	created_at: Date;

	@UpdateDateColumn()
	updated_at: Date;

	@ManyToOne(() => User, (user) => user.comment)
	@JoinColumn({
		name: "user_id",
	})
	user: User;

	@ManyToOne(() => Post, (post) => post.comment)
	@JoinColumn({
		name: "post_id",
	})
	post: Post;

	static getComments(postid: any) {
	  return this.createQueryBuilder("comment")
	    .innerJoinAndSelect("comment.post", "post")
	    .innerJoinAndSelect("comment.user", "user")
		.where("comment.post_id = :post_id", { post_id: postid })
		.getMany();
	}

	static getAComment(commentid: any) {
	  return this.createQueryBuilder("comment")
		.where("comment.id = :id", { id: commentid })
		.getOne();
	}
}

처음에 새로운 스택을 배우는 것이 설레기도 했지만, 조금 무섭기도 했다. controller를 작성하면서 계속해서 자신감이 붙어갔다. 이후에는 공식문서를 활용해서 다른 로직들도 천천히 구현해 나갔다!