Relation collection type
- 앞의 strapi field type설명에서 볼 수 있는 것과 같이 collection에 field를 생성할때 Relation타입으로 생성할 수 있다.
- 기본적으로 DB의 외래키(foreign key)와 비슷한 역할을 한다.
- 실제로 DB상에 외래키로 잡히는 것은 아니고 A, B Table사이에 참조 field를 정의 하는 A_B 관계 테이블을 실제로 생성하여 두개의 연결 관계를 strapi에서 중계해준다.
To-do subtask Relation
- 앞의 글에서 task라는 collection을 만들었으니 이어서 subtask라는 collection을 만들고 이를 task에 related field를 하나 만들어 연결해 보도록 하겠다.
- 먼저 subtask라는 collection을 생성하고
- name, desc라는 text필드를 추가 한후, 저장하여 collection을 생성한다.
- 이제 다시 Task collection을 선택하여 편집한다.
- + 새필드 추가를 누르자
- Type은 Relation(관계)를 선택하자
- 위와 같은 화면을 볼 수 있다. 왼쪽에 현재 Collection이름을 볼 수 있다. 그리고 현재 Collection(Task)에 필드 이름을 무었으로 할지 정할 수 있게 되어 있다. 참고로 필드이름은 오르쪽에 관계 Collection에 따라 알아서 관계를 맺는 Collection이름으로 설정되긴 한다. 물론 마음데로 바꿔도 상관없다.
- 오른쪽에서 붉게 표시된 부분을 누르면, 현재 collection과 관계를 설정할 collection 선택할 수 있다.
- subtask를 선택하자( 참고로 자기 자신과도 relation을 맺을 수 있다)
- 이제 가운데에서 서로간의 관계를 설정한다. 일단 task가 subtask여러개를 갖는다라는 설정으로 1:N 또는 가장 마지막에 있는 have many관계로 설정한다.
- 1:N과 have many의 궁극적인 차이는 1:N에서는 task가 N개의 subtask를 가질 수 있다, subtask도 누가 나를 가졋는지 알수 있다. have many는 task가 N개의 subtask를 가질 수 있다, 단 subtask는 누가 나를 가졋는지 알수 없다.
- 이 관계를 결국 Rest API를 사용해 보면 알 수 있게 되는데 1:N의 경우 subtask를 GET으로 얻어 오는 경우 subtask를 가진 task도 갖이 가져와 지는 걸 알 수 있는데, have many관계인 경우 그럴게 되지 않는다.
- 이부분은 나중에 따로 각각의 관계별로 collection들을 생성하고 관계를 맺어서 테스트 하는 강좌를 따로 하겠다.
To-do subtask TEST
- 테스트를 해보기 위해서 먼저, subtask에 값을 채워 보자
- subtask에 Name: subtask1, Desc:subtask1 desc 로 채웠다.
- 이제 task에서 이 subtask를 연결해 보자,
- task에 값을 추가하는 것과 동일하다. COLLECTION TYPES에서 Task를 누르자
- 아래와 같이 이미 이전 강좌에서 추가한 값이 있다. 연필 버튼을 눌러 편집을 해보자
- 아래와 같이 subtask라는 항목이 생성되어있다.
- subtask 아래 select 컨트롤를 눌러, 위에 추가한 subtask1을 골라 추가 한후 저장을 누르면 된다.
- 이제 task-subtask1이라는 관계가 성립되었다.
- 어제와 마찬가지로 Rest API로 task를 가져와 보자
- 아래 보는 것과 같이 subtasks 항목에 subtask의 정보를 가져오는 것을 볼 수 있다.
- 1:N또는 have many이기 때문에 array로 Data가 제공된다.
[
{
"id": 1,
"name": "홍길동",
"desc": "활빈당 두목",
"created_by": {
"id": 1,
"firstname": "jisu",
"lastname": "eo",
"username": null
},
"updated_by": {
"id": 1,
"firstname": "jisu",
"lastname": "eo",
"username": null
},
"created_at": "2020-12-02T15:04:49.452Z",
"updated_at": "2020-12-03T15:25:58.301Z",
"subtasks": [
{
"id": 1,
"name": "subtask1",
"desc": "subtask1 desc",
"created_by": 1,
"updated_by": 1,
"created_at": "2020-12-03T15:11:54.287Z",
"updated_at": "2020-12-03T15:11:54.300Z"
}
]
}
]
'CMS' 카테고리의 다른 글
str api 에 대하여 (2) (1) | 2020.12.26 |
---|---|
strapi API Customizing (0) | 2020.12.15 |
strapi Collection 생성과 사용 (0) | 2020.12.03 |
strapi collection type 상세 (2) | 2020.10.17 |
strapi collection type추가 (0) | 2020.10.12 |