목록공부 (30)
함께 성장하는 프로독학러
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 Document 를 검색하는 find() 메소드에 대해서 자세히 알아보도록 하겠습니다. Document 를 조회하는 find() 메소드 find() 메소드의 표현식은 다음과 같습니다. db.COLLECTION_NAME.find(query, projection) find() 메소드의 인자로 query 와 projection 이 들어옵니다.두 값 모드 Optional 파라메터입니다.query 의 데이터 타입은 document(객체) 입니다. 이는 다큐먼트를 조회하는 기준을 정하는 파라메터입니다. 이 값이 생략되거나 비어있는 객체 {} 를 전달하면 해당 컬렉션의 모든 다큐먼트들을 조회합니다.projection 의 데이터 타입 역시 document 로, 조회한 ..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 MongoDB 의 데이터를 모델링하는 방법에 대해 간단히 살펴보고, MongoDB Shell 안에서 Database, Collection, Document 를 생성하고 제거하는 명령어에 대해서 알아보겠습니다. 데이터 모델링 MongoDB 의 Document 를 모델링 하는 방법에 대해서 알아보겠습니다. 이해를 돕기위해 인스타그램을 위한 데이터베이스를 모델링한다고 가정해 봅시다. 인스타그램에서 게시물을 올릴 때 필요한 정보는 다음과 같습니다. 게시글에는 사진, 설명, 작성자, 작성일이 포함되어 있다.게시글에는 0개 이상의 해쉬태그를 가질 수 있다.게시글에 덧글을 달 수 있다. 만약 관계형 데이터베이스를 이용한다면 table 은 총 세개가 만들어 져야 할 것..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 리덕스를 사용하는 이유와 리덕스의 개념을 정리해 보겠습니다. * 이번 포스팅의 내용은 velopert 님의 '리덕스 왜 쓸까?' 포스팅을 정리한 내용입니다. 리덕스를 이해하기 위해서 먼저 리덕스를 사용하지 않는 환경의 단점을 먼저 파악해 보겠습니다. 간단한 예를 통해 살펴보겠습니다. 만약 다음 그림과 같이 세 개의 컴포넌트가 있다고 합시다.A 컴포넌트는 B 와 C 컴포넌트의 부모 컴포넌트입니다. B 컴포넌트는 A 의 상태를 변경하는 함수를 실행하는 컴포넌트입니다. (A의 상태를 변경하는 메소드 _increase 를 increNum 프롭스로 전달받습니다.) C 컴포넌트는 A 컴포넌트의 상태(state)를 렌더링하는 컴포넌트입니다.(A의 상태를 numValu..
안녕하세요, 프로독학러 입니다. 이번 포스팅 이후부터는 React 의 Redux 에 대해서 알아가 볼 예정입니다.따라서 이번 포스팅에서는 Redux 를 위한 세팅 및 코드 작성에 도움을 주는 세팅을 하겠습니다. 먼저 Redux 에 필요한 패키지파일들을 설치하겠습니다. 터미널 프로그램의 루트폴더에서 아래의 명령어를 입력해 줍니다. npm install --save redux react-redux 패키지를 통해 설치된 파일들의 사용은 추후에 개념과 함께 알아가도록 하겠습니다. 다음으로 코드 작성에 도움을 주는 몇 가지 세팅들을 해 보도록하겠습니다. 1) Atom 에디터의 Snippets 기능 Atom 에디터에는 Snippets 라는 기능이 있습니다.Snippets 에 코드를 작성해 두면, 해당 코드를 호출하..
안녕하세요, 프로독학러 입니다. 저번 포스팅에 이어 전화번호부 어플리케이션을 만들어 보도록 하겠습니다.*velopert 님의 Youtube 강의를 정리한 내용이라고 보시면 될 것 같습니다. (4강) 이번 포스팅에서는 전화번호부 어플리케이션의 목록 삭제와 수정 기능을 구현해 보겠습니다. 1) 데이터 삭제 먼저 데이터 삭제기능을 구현해 보도록 하겠습니다.데이터 삭제는 ContactDetail 컴포넌트에서 remove 버튼을 누르면 동작하도록 만들것입니다. 따라서, 먼저 ContactDetail 컴포넌트에 remove 버튼을 추가하겠습니다. (./src/components/ContactDetail.js) 123456789... Detail information {this.props.isSelected ? de..
안녕하세요, 프로독학러 입니다. 저번 포스팅에 이어 전화번호부 어플리케이션을 만들어 보도록 하겠습니다.*velopert 님의 Youtube 강의를 정리한 내용이라고 보시면 될 것 같습니다. (4강) 1) 개념 - 원본 state 를 훼손해서는 안되는 작업 이번 포스팅에서 구현할 기능은 Contact 컴포넌트의 state.contactData 에 새로운 전화번호부를 추가하는 내용입니다.이번 포스팅에서는 전화번호부를 추가, 다음포스팅에서는 수정 및 삭제 기능을 구현 할 예정인데, 놓치지 말아야 할 중요한 개념이 있습니다.추가, 수정, 삭제 모두 state 를 변경하는 작업인데요, 이 작업들은 모두 원본 state 를 직접변경해서는 안됩니다.이전 포스팅에서 selectedKey 나 keyword 와 같은 st..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 지난 포스팅 까지 배웠던 개념들을 가지고 간단한 웹 어플리케이션을 만들어 보도록 하겠습니다.*velopert 님의 Youtube 강의를 정리한 내용이라고 보시면 될 것 같습니다. (4강) 먼저 우리가 만들 웹 어플리케이션의 완성된 모습을 보고 어떻게 구현해야 할지 생각해 보도록 하겠습니다. 우리가 만들 Contact 어플리케이션은 전화번호부 어플리케이션입니다.Contact 목록에서 사람을 클릭하면, Detail information 창에 정보가 표시되고, 아래에 있는 Edit, Remove 버튼을 이용해 정보를 수정하거나 삭제 할 수 있습니다.맨 아래의 Create new user 를 이용하면 목록에 새로운 전화번호 정보를 추가 할 수 있습니다. 위의 어..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 Component Lifecycle 에 대해서 알아보도록 하겠습니다. Component Lifecycle 은 리액트가 내부적으로 작동하는 순서이며, 이를 활용해 각 단계 마다 원하는 동작을 취하게 할 수 있습니다.Component Lifecycle 은 컴포넌트가 생성되었을 때, 프롭스가 변경되었을 때, 스테이트가 변경 되었을때, 컴포넌트가 삭제 되었을 때 각각 다른 순서로 작동합니다. 전체적인 Component Lifecycle 의 구성은 다음과 같습니다. 가장 왼쪽의 그림부터 살펴보겠습니다. 컴포넌트가 생성 되었을 때 리액트가 동작하는 방식입니다.1) 컴포넌트를 초기화 합니다. (constructor를 통해 state를 초기화, 기본 프롭스값)2) co..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 props 에 이어 컴포넌트에서 데이터를 처리하는 개념중 하나인 state 에 대해서 알아보도록 하겠습니다. 저번 포스팅에서 props 를 '정적인 데이터'라고 했습니다.그 이유는 props 를 전달받아 사용하는 하위 컴포넌트에서 이 props 를 수정할 수 없기 때문이죠. 반면 state 는 컴포넌트 안에 존재하며, 수정할 수 있는 데이터입니다.그리고 state 가 수정되면 컴포넌트는 다시 렌더링 됩니다. (다음 포스팅이 될 예정인 Component Lifecycle 에서 더 자세히 살펴보겠습니다. 지금 단계에서는 스테이트가 수정되면 다시 렌더링 된다는 점만 기억해주세요) 먼저 state 의 선언부터 알아보겠습니다. 코드와 함께 살펴보도록 하겠습니다.프..
안녕하세요, 프로독학러입니다. 이번 포스팅 부터 React.js 에 대해서 알아가 보도록 하겠습니다. 가장 먼저 배울 내용은 React Component 입니다. React 프로젝트는 컴포넌트 단위로 구성됩니다.여러 개의 컴포넌트 들이 모여 페이지를 구성하게 됩니다.컴포넌트 별로 파일을 만들어 사용하기 때문에 한 번 정의한 컴포넌트를 프로젝트 내의 다른 곳에서 재사용하기도 편리합니다. 그럼 저희의 프로젝트에서 컴포넌트를 하나 만들어 보도록 하겠습니다. 루트 폴더의 하위 src 폴더의 아래에 components 폴더를 하나 만들어 보겠습니다.(앞으로 만들 컴포넌트들은 모두 이 폴더에 저장할 것입니다)그리고 생성된 components 폴더에 Test_comp.js 파일을 만들고 아래의 코드를 복사, 붙여넣기..