AEM: Cambios en la administración de valores nulos en GraphQL
El primer cambio afecta a las condiciones de filtro que aprovechan el CONTAINS_NOT
operador, los otros dos se refieren a null valores en condiciones de filtro en campos de varios valores.
Descripción description
Entorno
Adobe Experience Manager AEM () as a Cloud Service
Problema/Síntomas
En la versión 2023.02.11382 de, se han realizado algunas mejoras en la implementación de GraphQL (Open-Source Query Language) que podrían provocar un comportamiento inesperado en el código de la aplicación, en caso de que se basara en el comportamiento erróneo de las versiones anteriores. La siguiente resolución ayuda a lograr que Adobe Experience Manager AEM () GraphQL ahora devuelva contenido con valores nulos de forma coherente en todas las operaciones de filtrado.
Resolución resolution
CONTAINS_NOT
y null values
El primer cambio afecta a las condiciones de filtro que aprovechan el CONTAINS_NOT
operador. En versiones anteriores, esto CONTAINS_NOT
no devolvieron fragmentos de contenido que contenían null valores en el campo al que se aplicó la condición de filtro. Esto no es coherente con operadores similares como EQUALS_NOT
o NOT_AT
.
Asegúrese de que la aplicación cliente pueda gestionar lo siguiente null AEM valores devueltos por los usuarios al utilizar el valor de tipo CONTAINS_NOT
.
Ejemplo:
value: "frag",
_op: CONTAINS_NOT
}
[
{
myField: null
},
{
myField: "Some text"
},
{
myField: "Text fragment"
}
]
[
{
myField: "Some text"
}
]
[
{
myField: null
},
{
myField: "Some text"
}
]
Aplicar modos ALL_OR_EMPTY/ALL
y null values
Otro problema corregido en 2023.02.11382 está relacionado con null valores en condiciones de filtro en campos de varios valores. Modo de aplicación ALL_OR_EMPTY
(en matrices/campos de varios valores) no devolvía fragmentos con null para el campo en cuestión, por lo que funcionaba como cabría esperar para el ALL
método apply. Al mismo tiempo, filtrar un campo de varios valores con el modo de aplicación ALL
incluiría fragmentos con contenido vacío para ese campo, pero no debería. Se recomienda probar las consultas que utilizan uno de estos modos de aplicación y cambiarlas si ya no devuelven el conjunto de resultados esperado en 2023.02.11382.
Tenga en cuenta que el problema solo existía para algunos operadores (anterior a 2023.02.11382).
Por ejemplo: EQUALS_NOT
funcionó según lo esperado para el método de aplicación ALL_OR_EMPTY
, mientras que CONTAINS
no lo hizo.
Ejemplo:
_expresiones: {
valor: 1,3
_operator: EQUALS_NOT
_aplicar: TODO
}
}
[
{
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" ]
}
]
_expresiones: {
valor: 2.
_operator: CONTIENE
_apply: ALL_OR_EMPTY
}
}
[
{
myArray:
[
"2,1", "2,2", "2,3" ]
}
]
[
{
myArray: null
},
{
myArray:
[
"2,1", "2,2", "2,3" ]
}
]
Aplicar modos: INSTANCES
, _instances: 0
y null values
El último problema también está relacionado con null valores en condiciones de filtro en campos de varios valores. Modo de aplicación INSTANCES
con_instances: 0
no coinciden con los fragmentos de contenido que contienen null valores en el campo respectivo antes del 2023.02.11382, pero empezará con el 2023.02.11382. Se recomienda probar las consultas que utilizan esta constelación y cambiarlas si ya no devuelven el conjunto de resultados esperado en 2023.02.11382.
Ejemplo:
_expresiones: {
valor: 2.
_operator: CONTIENE
_apply: INSTANCES
_instancias: 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" ]
}
]
Mejoras que pueden afectar a los clientes con ft-sites-97
activado
Clientes que tenían el ft-sites-97
(paginación de GraphQL y filtrado optimizado) indicador de funcionalidad habilitado antes la versión 2023.02.11382 puede experimentar uno o más de los siguientes cambios en el comportamiento después de actualizar a 2023.02.11382. Los clientes que no tengan habilitado este indicador de funcionalidad no se ven afectados por esta sección.
tratamiento nulo con condiciones que comprueban la no igualdad
Campos de fragmento con null Los valores de no coincidían intermitentemente con los filtros que comprobaban la no igualdad.
Si el código depende de que no se devuelvan estos fragmentos, deberá ajustarlo para adaptarlo al comportamiento esperado.
value: "Some text",
_op: EQUALS_NOT
}
[
{
myField: null
},
{
myField: "Some text"
},
{
myField: "Text fragment"
}
]
[
{
myField: "Some text"
}
]
[
{
myField: null
},
{
myField: "Some text"
}
]
Operador de filtro NOT_AT
con valores de fecha y hora
Operador de filtro NOT_AT
no funcionaba correctamente de forma intermitente con valores de fecha y hora. En cambio, funcionaba más como el AFTER
condición.
Si el código se basa en un comportamiento incorrecto, debe cambiar la condición de filtro a AFTER
.
Matrices: INSTANCES
con _instances: 0
no funciona correctamente
Condición de filtro INSTANCES
(en matrices/campos multivalor) con _instances
establecido en 0 intermitentemente no funcionó como se esperaba, no devolvió nada donde realmente debería haber.
Los fragmentos de filtro afectados por este problema tendrían el siguiente aspecto: doubleArray: { _expressions: { value: 0, _operator: GREATER, _apply: INSTANCES, _instances: 0 } }
Si confía en el comportamiento erróneo, debe reescribir la consulta para devolver los mismos resultados que antes.
_expresiones: {
valor: 20
_operator: EQUAL
_apply: INSTANCES
_instancias: 0
}
}
[
{
myArray: null
},
{
myArray:
[
10, 20, 30 ]
},
{
myArray:
[
11, 12, 13 ]
}
]
[
]
[
{
myArray: null
},
{
myArray:
[
11, 12, 13 ]
}
]