쿼리 함수필드 위의 필드
필드 위의 필드
Included in the “Power Extensions” bundle
@applyField 디렉티브는 해결된 필드의 값에 대해 특정 필드를 실행합니다.
설명
어떤 필드에 적용되면, @applyField 디렉티브는 다른 필드(동일한 타입에서 사용 가능하며 동일한 객체에 적용되는 필드)를 실행하고, 그 결과 값을 다른 디렉티브에 전달하거나 필드의 값을 덮어쓸 수 있습니다.
이를 통해 PHP Functions via Schema 확장 기능이 제공하는 기능을 적용하여 필드의 값을 다양한 방식으로 조작하고, 새로운 결과를 응답에 저장할 수 있습니다.
아래 쿼리에서 객체의 Post.title 필드 값은 "Hello world!"입니다. @applyField를 추가하여 _strUpperCase 필드를 실행하고(앞에 @passOnwards를 붙여 필드 값을 동적 $input으로 내보냅니다):
{
post(by: { id: 1 }) {
title
@passOnwards(as: "input")
@applyField(
name: "_strUpperCase"
arguments: {
text: $input
},
setResultInResponse: true
)
}
}...필드의 값이 대문자로 변환되어 다음과 같은 결과가 생성됩니다:
{
"data": {
"post": {
"title": "HELLO WORLD!"
}
}
}여러 개의 @applyFunction을 연결하여 한쪽의 응답을 다른 쪽의 입력으로 사용함으로써 동일한 필드 값에 대해 여러 작업을 수행할 수 있습니다.
아래 쿼리에서는 2개의 @applyFunction 작업이 적용됩니다:
- 대문자로 변환하고 그 값을
$ucTitle로 다음에 전달 " "을"-"로 교체하여 필드 값을 덮어쓰기
{
post(by: { id: 1 }) {
title
@passOnwards(as: "input")
@applyField(
name: "_strUpperCase"
arguments: {
text: $input
},
passOnwardsAs: "ucTitle"
)
@applyField(
name: "_strReplace"
arguments: {
search: " ",
replaceWith: "-",
in: $ucTitle
},
setResultInResponse: true
)
}
}...다음과 같은 결과가 생성됩니다:
{
"data": {
"post": {
"title": "HELLO-WORLD!"
}
}
}추가 예시
필드가 제공하는 값의 반대 값을 가져오기:
{
posts {
id
notHasComments: hasComments
@passOnwards(as: "hasComments")
@applyField(
name: "_not",
arguments: {
value: $hasComments
},
setResultInResponse: true
)
}
}Data Iteration Meta Directives 확장 기능과 함께 배열의 모든 항목을 조작하여 각각 최대 20자로 단축하기:
{
posts {
categoryNames
@underEachArrayItem(passValueOnwardsAs: "categoryName")
@applyField(
name: "_strSubstr"
arguments: {
string: $categoryName,
offset: 0,
length: 20
},
setResultInResponse: true
)
}
}Data Iteration Meta Directives 확장 기능과 함께 배열의 첫 번째 항목을 대문자로 변환하기:
{
posts {
categoryNames
@underArrayItem(passOnwardsAs: "value", index: 0)
@applyField(
name: "_strUpperCase"
arguments: {
text: $value
},
setResultInResponse: true
)
}
}