AEM:null 値のGraphQL処理の変更

最初の変更は、 CONTAINS_NOT オペレーター、残りの 2 つの懸念  null  複数値フィールドのフィルター条件の値。

説明 description

環境
Adobe Experience Manager (AEM) as a Cloud Service

問題/症状
リリース2023.02.11382では、古いリリースの誤った動作に依存している場合にアプリケーションコードで予期しない動作が発生する可能性がある、GraphQL(オープンソースクエリ言語)の実装が改善されました。 以下に示す解決方法を使用すると、Adobe Experience Manager(AEM)GraphQLは、すべてのフィルター操作で一貫した null 値のコンテンツを返すようになります。

解決策 resolution

CONTAINS_NOT および null

最初の変更は、 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: "Some text"
    },
    {
        myField: "Text fragment"
    }
]
[
    {
        myField: "Some text"
    }
]
[
    {
        myField: null
    },
    {
        myField: "Some text"
    }
]

モードの適用 ALL_OR_EMPTY/ALL および  null  値
2023.02.11382で修正された別の問題は、  null  複数値フィールドのフィルター条件の値。 適用モード ALL_OR_EMPTY (配列/複数値フィールドの)が  null  問題のフィールドの値は、そのため、実際には ALL メソッドを適用します。 同時に、適用モードで複数値フィールドをフィルタリングします ALL そのフィールドには空のコンテンツを持つフラグメントが含まれますが、含めないでください。これらの適用モードの 1 つを使用するクエリをテストし、2023.02.11382で期待された結果セットが返されない場合は、クエリを変更することをお勧めします。

この問題は、一部のオペレーター (2023.02.11382以前 ) に対してのみ発生していました。
例: EQUALS_NOT 適用法で期待通りに働く ALL_OR_EMPTY一方、 CONTAINS そうではありません。
例:

フラグメントをフィルター
データ
2023.02.11382より前の結果
2023.02.11382で始まる結果
myArray: {
  _expressions: {
    値: "1.3"
    _operator: EQUALS_NOT
    _apply: ALL
  }
}
[
  {
    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" ]
  }
]
myArray: {
  _expressions: {
    値: "2"
    _operator: CONTAINS
    _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で始まる結果
myArray: {
  _expressions: {
    値: "2"
    _operator: CONTAINS
    _apply: INSTANCES
    _instances: 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にアップグレードした後、次の動作の変更が 1 つ以上発生する場合があ2023.02.11382ます。この機能フラグを有効にしていないお客様は、この節の影響を受けません。
非等価をチェックする条件を持つ null 処理
フラグメントフィールドを  null  の値は、非等価をチェックしているフィルターと断続的に一致しませんでした。

コードでこれらのフラグメントが返されないことに依存している場合は、期待される動作に合わせてコードを調整する必要があります。

フラグメントをフィルター
データ
中間実装の結果
最終実装からの結果
myField: {
  値: "Some text",
  _op: EQUALS_NOT
}
[
  {
    myField: null
  },
  {
    myField: "Some text"
  },
  {
    myField: "Text fragment"
  }
]
[
  {
    myField: "Some text"
  }
]
[
  {
    myField: null
  },
  {
    myField: "Some text"
  }
]

フィルター演算子 NOT_AT 日付/時間値
フィルター演算子 NOT_AT が断続的に data/times 値で正しく機能しなかった問題を修正しました。 その代わりに、より機能していたのは、 AFTER 条件。
コードで誤った動作が使用されている場合は、フィルター条件をに切り替える必要があります。 AFTER.
配列: INSTANCES 次を使用 _instances: 0 正しく機能しない
フィルター条件 INSTANCES (配列/複数値フィールドの場合) _instances 0 に断続的に設定すると、が実際にはがあるはずの場所に何も返されず、期待どおりに動作しなかった。

この問題の影響を受けるフィルターフラグメントは、次のようになります。 doubleArray: { _expressions: { value: 0, _operator: GREATER, _apply: INSTANCES, _instances: 0 } }

誤った動作に依存していた場合は、以前と同じ結果を返すようにクエリを書き換える必要があります。

フラグメントをフィルター
データ
中間実装の結果
最終実装からの結果
myArray: {
  _expressions: {
    値:20
    _operator: EQUAL
    _apply: INSTANCES
    _instances: 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