본문 바로가기
CMS

strapi collection type 상세

by NOMADFISH 2020. 10. 17.

Collection Type

strapi의 collection type을 생성하는 상세한 방법에 대하여 설명한다.

collection의 field 타입


Field type들

  • field타입은 기본적으로 DB의 Column type과 같다. 그래서 보통 DB의 Column type과 거의 비슷하게 매치된다. 실제로 collection type의 field를 생성하면 현재 strapi의 설정된 DB가 가진 가장 비슷한 Column type으로 Column이 생성된다.
  • Field Type
    • Text: 기존의 스트링 타입의 Text, short, long Text
    • Rich Text: Text Editor에 작성된 Text와 Formatting을 저장하는 포멧
    • Number: 정수, 실수를 모두 커버 하는 타입
    • Date: 날짜
    • Boolean
    • Relation: 다른 Field와 관계를 설정한다.
    • Email
    • Password
    • Media
    • Json
    • UID: 유니크 아이디

     

Text field추가 

  • 타입을 하나 선택하면 각각의 Field타입에 따라 세부 설정하는 화면을 볼 수 있다. 위 예시와 같이 Text Field의 경우 Name(DB의 Column 이름이 된다) Short Text, Long Text 타입인지 결정한다.
  • 위 그림에서 볼 수 있는 것과 같이 Advanced Settings라는 것도 존재 한다. 보통, 세부 타입과, 제약사항등을 설정 할 수 있다.

Field type 세부 설정

  • 위에서 볼 수 있는 것과 같이 Default Value나 정규식을 이용한 간단한 검증 룰(포멧이 안맞음 저장 못하게 막는)도 넣는다.
  • Settings
    • Private Field: strapi 서버나 admin dashboard에서만 볼 수 있고, 실제 RestAPIs에서는 서비스 되지 않는 fileld를 이야기 한다.
    • Requeired Field: 필수 필드로 Collection Type에 데이터 추가시 반드시 넣어야 하는 필드, RestAPIs, Server API를 통해서 Collection Type에 Data추가 될시 이 필드가 누락되면 에러가 발생한다.
    • Unique Field: 추가되는 데이터들 끼리 절대 중복 불가능한 값이어야 된다. 보통 ID등에 많이 사용된다.
  • 일반적인 Filed Type들은 위의 Text Field의 내용과 거의 흡사하다. 다만 Relation Field의 경우 좀 많이 다른 점이 있다.

Relation Field

  • 우리가 보통의 경우 알고 있는 Foreign Key를 이용한, Table 끼리 Relation을 맺는 것과 비슷한 역할을 수행한다.
  • DB의 Table의 Relation은 보통 1:1, 1:N, N:N, N:1들으로 나누어 지는데, 이런 Relation을 설정하는 것이 모두 가능하다.

Relation Field

  • Relation Field를 추가를 선택하면 보이는 화면이다. 오른쪽 부분에 어떤 Collection 타입과 Relation을 맺을지 설정하는 부분이 있다.
  • 재밋는 것은 Relation을 꼭 다른 Collection타입이 아닌 자기 자신 Collection과도 맺을 수 있다.
  • Relation의 종류
    • 1:1 has
    • 1:1 has and belong
    • 1:N has and belong
    • N:1 has and belong
    • N:N has and belong
    • 1:N has
  • has의 경우 A->B인경우 A가 B를 가지고 있지만 B는 A가 자신을 가진것을 모른다.
  • has and belong의 경우 A<->B A, B 서로 서로가 서로를 가지게 된다. 
  • 실제로 DB에서는 Relation Field라는 타입은 없다, 또한 Foreign Key도 설정하지는 않는다. 
    • Collection Type 끼리의 Relation은 실제 DB에서 Table1-Table2 형태의 Relation을 정의 하는 새로운 Table을 생성하여 strapi는 관리한다.
  • 이런 Relation Field는 RestAPI로 호출시에 { name: 'A', B{} } 이런 방식의 nested object( 하위에 자식 오브젝틀를 보유하는 방식)로 Service된다. 즉 A->B(A has B)인 경우 RestAPI로 A를 호출 하면 아래와 가같은 형식으로 Response가 제공된다.
{
	name; 'a'
    B: {
    	name: 'b'
    }
}

 

 

아래에서 기본 소스를 받아 보실 수 있습니다.

https://github.com/MadfishDT/strapi-prac1


이제 기본적인 collection type들을 생성할 수 있는 것이다. 다음에는 이들을 이용하여 간단한 collection들을 실제로 생성하고, 이를 REST API로 호출하여 사용하는 방법을 하나 하나 자세히 설명해 보기로 한다.

'CMS' 카테고리의 다른 글

strapi relation type 생성과 사용  (1) 2020.12.04
strapi Collection 생성과 사용  (0) 2020.12.03
strapi collection type추가  (0) 2020.10.12
str api, DB와 RestAPIs  (0) 2020.10.04
strapi Admin & User  (0) 2020.09.24