`params.previousData` is undefined in `update` call with `hydraDataProvider`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- react, typescript
Línea de trabajo
Comienza por la llamada de actualización de hydraDataProvider y por la sobreescritura personalizada de update mostrada en la reproducción; después, sigue cómo la acción de guardado proporciona params.data y params.previousData. Reproduce el flujo de edición y determina por qué falta previousData; se considera terminado cuando se hayan establecido la causa y el comportamiento esperado, junto con una comprobación de regresión o una documentación clara de los parámetros de actualización compatibles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
API Platform version(s) affected: 3.4.4
Description
We need to use PATCH instead of PUT to update existing resources, so I drew inspiration from this comment https://github.com/api-platform/admin/issues/370#issuecomment-831749350 and overwrote the update method of our data provider, which is an instance of hydraDataProvider.
The new update method should create a diff between the current resource data (given in params.data) and the previous data (given in params.previousData) and then execute a PATCH request.
However, params.previousData is undefined when a user edits a resource and clicks the save button.
I figured it may be caused by some previous error on the page where this behavior occurs, but there are no errors in the JavaScript console on that page. The first error that occurs is that params.previousData is undefined when our diff function is called.
We haven't added much custom logic to our admin implementation, most things are done by the default implementations and automations of API Platform Admin.
What could cause this issue? Is params.previousData supposed to be empty?
How to reproduce
// We use the built-in fetchHydra() and parseHydraDocumentation() functions,
// but wrapped them to handle authorization as shown in the API Platform Admin docs and examples
const baseDataProvider = hydraDataProvider({
entrypoint: ENTRYPOINT,
httpClient: fetchHydraWithAuthentication,
apiDocumentationParser: apiDocumentationParser
});
baseDataProvider.update = function(resource, params) {
return this.httpClient(`${this.entrypoint}/${resource}/${params.id}`, {
method: 'PATCH',
body: JSON.stringify(diff(params.data, params.previousData)),
}).then(({json}) => ({data: json}));
};
// We use lodash helpers to implement this diff function
const diff = (object, base) => {
return transform(object, (result, value, key) => {
if (!isEqual(value, base[key])) {
result[key] = isObject(value) && isObject(base[key]) ? diff(value, base[key]) : value;
}
});
};
- Lenguaje dominante
- TypeScript
- Estrellas
- 516
- Forks
- 134
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de api-platform/admin
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
api-platform/admin#616 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 64/100
api-platform/admin#660 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
api-platform/admin#659 · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
api-platform/admin#631 · 6 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
api-platform/admin#626 · 1 comentario · 1 reacción ·
Todos los issues de api-platform/admin
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100