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
.
例:
値: "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
そうではありません。
例:
_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" ]
}
]
_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で期待された結果セットが返されない場合は、クエリを変更することをお勧めします。
例:
_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 の値は、非等価をチェックしているフィルターと断続的に一致しませんでした。
コードでこれらのフラグメントが返されないことに依存している場合は、期待される動作に合わせてコードを調整する必要があります。
値: "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 } }
誤った動作に依存していた場合は、以前と同じ結果を返すようにクエリを書き換える必要があります。
_expressions: {
値:20
_operator: EQUAL
_apply: INSTANCES
_instances: 0
}
}
[
{
myArray: null
},
{
myArray:
[
10、20、30 ]
},
{
myArray:
[
11、12、13 ]
}
]
[
]
[
{
myArray: null
},
{
myArray:
[
11、12、13 ]
}
]