Jcn 408 add trim in data dispatcher#7
Conversation
fedeatanasoff
left a comment
There was a problem hiding this comment.
no se si ya esta implementado pero en el desarrollo al menos no veo la implementacion de este punto
Considerar que una Api puede recibir un Object o un Object Array
| constructor(request) { | ||
| this._validateRequest(request); | ||
|
|
||
| const trimData = trimObjectValues({ ...request.data }); |
There was a problem hiding this comment.
aca un par de cosas:
- podes usar directamente
request.data - porque no lo utilizas directamente en las props que queres setear?
There was a problem hiding this comment.
Fede, aca estoy usando { ...request.data } para no alterar el objeto original que me vino en request.data
en cuanto al segundo comentario que props te referis ?
Esta contemplado pasarle un Array Object
There was a problem hiding this comment.
que tan chequeado esta que cloneObject te altere la data?
porque sino podrias tirar ahi algo como
this.pristineData = request.data && cloneObj(request.data);
There was a problem hiding this comment.
Tenes razon, el cloneObject no altera el objeto original.
Ahi agregue el cambio que me comentaste arriba
There was a problem hiding this comment.
hay dos cosas que no me cierran del todo, primero que ...request.data si el objeto tiene muchos niveles a fin de cuenta vas a estar modificando los objetos internos, por otro lado si el objeto es muy picante en niveles capaz la recursiva de trimObjectValues puede ser un problema aunque es la fácil para salir ahora.
| }); | ||
|
|
||
| return object; | ||
| }; |
There was a problem hiding this comment.
esta recursiva esta mal, porque el return {} adultera datos, ademas en el medio se pierden datos y por ultimo entra en casos donde no es necesario, por ejemplo el el value del k es true entra a la recursiva y eso no esta ok.
| 'use strict'; | ||
|
|
||
| const omit = require('lodash.omit'); | ||
| const cloneObj = require('lodash.clonedeep'); |
There was a problem hiding this comment.
esto quedo redundante, ya no se usa acá y lo exportas para usarlo en otro archivo, iría derecho a lib/dispatcher.js en la linea 9 con este require
| this.data = request.data || {}; | ||
| this.pristineData = request.data && { ...request.data }; | ||
| this.data = trimObjectValues(request.data && cloneObj(request.data)); | ||
| this.pristineData = request.data && cloneObj(request.data); |
There was a problem hiding this comment.
ahora que this.data tiene un cloneObj, me suena que this.pristineData no necesita el clone, si el objeto es muy grande estamos metiendo un segundo clone que no necesitamos.
DESCRIPCIÓN DEL REQUERIMIENTO
Se requiere modificar el package para evitar que se guarden espacios intencionales en los datos recibidos.
Se debe modificar la property pristineData, usando el package https://npmjs.com/lodash.clonedeepen vez del {... request.data } actual
DESCRIPCIÓN DE LA SOLUCIÓN
Se agrego la funcion
trimObjValuesen utils.js que hace un trim de todos los values de la data recibida.Se agrego el package mencionado anteriorme para usar la funcion de clonedeep para el objeto pristineData