Compartí un fragmento de código que demuestra que tengo dos tipos de response . Si observa el código a continuación, descubrirá que la response de un resultado de servicio sería ligeramente diferente. En el primer tipo, tiene un solo data pero en el segundo, este data tiene otro data en sí mismo.
{ "data": { "hasError": false, "developerMessage": null, "totalCount": 43 }, "hasError": false, "developerMessage": null }O:
{ "data": { "hasError": false, "developerMessage": null, "data": { "hasError": false, "developerMessage": null, "totalCount": 43 }, "totalCount": 43 }, "hasError": false, "developerMessage": null } Entonces, para manejar esta situación, primero tuve que verificar el resultado de la response y dividirlo en dos bloques. El gran problema es que por razones que no puedo explicar aquí, esta jerarquía podría expandirse y tengo tres datos, pero de lo que estamos seguros es que los data en la response siempre son los más profundos . (El tercer elemento en este ejemplo)
return this.httpWrapperService.get(url + tableNameWithSlash, { params: params, additionalOptions: {spinnerEnabled: false} }).then((result: any) => { if (result.data.data) { // code return [...result.data.data]; } else if (result.data) { // code return [...result.data]; } }); Me preguntaba si hay una mejor solución para manejar esta response dinámica.
Puede usar la recursividad para crear una solución que funcione para cualquier profundidad, por ejemplo, los datos están en la cuarta capa
.then((result: any) => { const findData = (response: any) => { return response.data ? findData(response.data):response; } return [...findData(result.data)]; });