AEM: GraphQL에서 null 값을 처리하는 변경 사항

첫 번째 변경 사항은 를 활용하는 필터 조건에 영향을 줍니다. CONTAINS_NOT 연산자, 기타 두 가지 문제  null  다중 값 필드의 필터 조건 값.

설명 description

환경
Adobe Experience Manager (AEM) as a Cloud Service

문제/증상
릴리스 2023.02.11382에서는 이전 릴리스의 잘못된 동작에 의존하는 경우 애플리케이션 코드에 예기치 않은 동작이 발생할 수 있는 GraphQL(오픈 소스 쿼리 언어) 구현이 일부 개선되었습니다. 아래에 언급된 해결 방법은 이제 Adobe Experience Manager(AEM) GraphQL이 모든 필터 작업에서 일관되게 null 값이 있는 컨텐츠를 반환하도록 하는 데 도움이 됩니다.

해결 방법 resolution

CONTAINS_NOTnull

첫 번째 변경 사항은 를 활용하는 필터 조건에 영향을 줍니다. CONTAINS_NOT 연산자. 이전 릴리스에서는 CONTAINS_NOT 이(가) 다음을 포함하는 콘텐츠 조각을 반환하지 않음 null 필터 조건이 적용된 필드의 값. 이는 과 같은 유사한 연산자와 일치하지 않습니다. EQUALS_NOT 또는 NOT_AT.
클라이언트 응용 프로그램에서 처리할 수 있는지 확인하십시오. null 를 사용할 때 AEM에서 반환되는 값 CONTAINS_NOT.

예:

필터 조각
데이터
2023.02.11382 이전 결과
결과: 2023.02.11382
myField: {
    값: "frag",
    _op: CONTAINS_NOT
}
[
    {
        myField: null
    },
    {
        myField: "일부 텍스트"
    },
    {
        myField: "텍스트 조각"
    }
]
[
    {
        myField: "일부 텍스트"
    }
]
[
    {
        myField: null
    },
    {
        myField: "일부 텍스트"
    }
]

모드 적용 ALL_OR_EMPTY/ALL 및  null  값
2023.02.11382에서 해결된 또 다른 문제는  null  다중 값 필드의 필터 조건 값. 적용 모드 ALL_OR_EMPTY (배열/다중 값 필드에서)가  null  해당 필드에 대한 값이므로 예상대로 실제로 작동하고 있었습니다. ALL 메서드를 적용합니다. 동시에 적용 모드로 다중 값 필드 필터링 ALL 에는 해당 필드에 대한 비어 있는 콘텐츠가 있는 조각이 포함되지만 포함되어서는 안 됩니다. 이러한 적용 모드 중 하나를 사용하는 쿼리를 테스트하고, 더 이상 2023.02.11382에 설정된 예상 결과를 반환하지 않는 경우 변경하는 것이 좋습니다.

일부 연산자(2023.02.11382 이전)에만 문제가 있었습니다.
예: EQUALS_NOT 적용 방법에 대해 예상대로 작업했습니다. ALL_OR_EMPTY, 반면 CONTAINS 하지 않았습니다.
예:

필터 조각
데이터
2023.02.11382 이전 결과
결과: 2023.02.11382
내 배열: {
  표현식(_P): {
    값: "1.3"
    _operator: EQUALS_NOT
    _apply: 모두
  }
}
[
  {
    myArray: null
  },
  {
    myArray: [ "1.1", "1.2", "1.3" ]
  },
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]
[
  {
    myArray: null
  },
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]
[
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]
내 배열: {
  표현식(_P): {
    값: "2."
    _operator: 포함
    _apply: ALL_OR_EMPTY
  }
}
[
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]
[
  {
    myArray: null
  },
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]

적용 모드: INSTANCES, _instances: 0 및  null  값
마지막 문제는  null  여러 값 필드의 필터 조건 값. 적용 모드 INSTANCES 포함_instances: 0 이(가) 포함된 콘텐츠 조각과 일치하지 않습니다.  null  2023.02.11382 이전의 각 필드에 있는 값이지만 2023.02.11382부터 시작됩니다. 이 별자리를 사용하는 쿼리를 테스트하고 더 이상 2023.02.11382에 설정된 예상 결과를 반환하지 않으면 변경하는 것이 좋습니다.
예:

필터 조각
데이터
2023.02.11382 이전 결과
결과: 2023.02.11382
내 배열: {
  표현식(_P): {
    값: "2."
    _operator: 포함
    _apply: 인스턴스
    인스턴스(_I): 0
  }
}
[
  {
    myArray: null
  },
  {
    myArray: [ "1.1", "1.2", "1.3" ]
  },
  {
    myArray: [ "2.1", "2.2", "2.3" ]
  }
]
[
  {
    myArray: [ "1.1", "1.2", "1.3" ]
  }
]
[
  {
    myArray: null
  },
  {
    myArray: [ "1.1", "1.2", "1.3" ]
  }
]

의 고객에게 영향을 줄 수 있는 개선 사항 ft-sites-97 활성화됨
다음을 보유한 고객 ft-sites-97(GraphQL 페이지 매김 및 최적화된 필터링)  기능 플래그 활성화됨  다음 이전 2023.02.11382으로 업그레이드한 후 릴리스 2023.02.11382에서 다음 동작 변경 중 하나 이상이 발생할 수 있습니다. 이 기능 플래그를 활성화하지 않은 고객은 이 섹션의 영향을 받지 않습니다.
같지 않음을 확인하는 조건을 사용한 null 처리
다음을 사용하여 필드 조각  null  불일치를 확인하는 필터에서 값이 간헐적으로 일치하지 않습니다.

코드가 이러한 조각이 반환되지 않는 것에 의존한다면 예상 비헤이비어에 맞게 코드를 조정해야 합니다.

필터 조각
데이터
중간 구현 결과
최종 구현 결과
myField: {
  값: "일부 텍스트",
  _op: EQUALS_NOT
}
[
  {
    myField: null
  },
  {
    myField: "일부 텍스트"
  },
  {
    myField: "텍스트 조각"
  }
]
[
  {
    myField: "일부 텍스트"
  }
]
[
  {
    myField: null
  },
  {
    myField: "일부 텍스트"
  }
]

필터 연산자 NOT_AT 날짜/시간 값 포함
필터 연산자 NOT_AT 가 간헐적으로 데이터/시간 값으로 올바르게 작동하지 않습니다. 대신, 다음과 같이 작동했습니다. AFTER 조건.
코드가 잘못된 동작에 의존하는 경우 필터 조건을 로 전환해야 합니다. AFTER.
배열: INSTANCES 포함 _instances: 0 제대로 작동하지 않음
필터 조건 INSTANCES (배열/다중 값 필드에서) _instances 간헐적으로 0으로 설정하면 예상대로 작동하지 않고, 가 실제로 있어야 하는 위치에 아무 것도 반환되지 않았습니다.

이 문제의 영향을 받는 필터 조각은 다음과 같습니다. doubleArray: { _expressions: { value: 0, _operator: GREATER, _apply: INSTANCES, _instances: 0 } }

잘못된 동작에 의존하는 경우 쿼리를 다시 작성해야 이전과 동일한 결과를 반환할 수 있습니다.

필터 조각
데이터
중간 구현 결과
최종 구현 결과
내 배열: {
  표현식(_P): {
    값: 20
    _operator: 같음
    _apply: 인스턴스
    인스턴스(_I): 0
  }
}
[
  {
    myArray: null
  },
  {
    myArray: [ 10, 20, 30 ]
  },
  {
    myArray: [ 11,12,13 ]
  }
]
[ ]
[
  {
    myArray: null
  },
  {
    myArray: [ 11,12,13 ]
  }
]
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f