Aaron Benton es un arquitecto experimentado especializado en soluciones creativas para desarrollar aplicaciones móviles innovadoras. Tiene más de 10 años de experiencia en desarrollo full stack, incluyendo ColdFusion, SQL, NoSQL, JavaScript, HTML y CSS. Aaron es actualmente Arquitecto de Aplicaciones para Shop.com en Greensboro, Carolina del Norte y es un Campeón de la comunidad Couchbase.

Aaron Benton

FakeIt Series 4 de 5: Trabajar con datos existentes

Hasta ahora, en nuestro FakeIt serie hemos visto cómo podemos Generar datos falsos, Compartir datos y dependenciasy utilice Definiciones para modelos más pequeños. Hoy vamos a ver la última característica importante de FakeIt, que es trabajar con datos existentes a través de entradas.

Como desarrolladores, rara vez tenemos la ventaja de trabajar en aplicaciones totalmente nuevas, ya que nuestros dominios suelen estar compuestos por diferentes bases de datos y aplicaciones heredadas. A medida que modelamos y creamos nuevas aplicaciones, necesitamos referenciar y utilizar estos datos existentes.  FakeIt le permite proporcionar datos existentes a sus modelos a través de archivos JSON, CSV o CSON. Estos datos se exponen como una variable de entrada en cada una de las funciones *run y *build de los modelos.

Modelo de usuario

Empezaremos con nuestro modelo users.yaml que actualizamos en nuestro post reciente utilizar Dirección y Teléfono definiciones.

 

Actualmente, nuestro Dirección es generar un país al azar. ¿Y si nuestro sitio de comercio electrónico sólo admite un pequeño subconjunto de los 195 países? Digamos que, para empezar, admitimos seis países: US, CA, MX, UK, ES, DE. Podríamos actualizar la propiedad country de las definiciones para obtener un elemento de matriz aleatorio:

(En aras de la brevedad, se han omitido las demás propiedades de la definición del modelo)

Si bien esto funcionaría, ¿qué pasa si tenemos otros modelos que dependen de esta misma información del país, tendríamos que duplicar esta lógica. Podemos conseguir lo mismo creando un fichero countries.json, y añadiendo una propiedad inputs a la propiedad data que puede ser una ruta absoluta o relativa a nuestra entrada. Cuando se genere el modelo, nuestro fichero countries.json será expuesto a cada una de las funciones de construcción del modelo a través del argumento inputs como inputs.countries

(En aras de la brevedad, se han omitido las demás propiedades de la definición del modelo)

Cambiando una línea existente y añadiendo otra línea en el modelo hemos proporcionado datos existentes a nuestro modelo de Usuarios. Aún podemos generar un país aleatorio, basado en los países que soporta nuestra aplicación. Vamos a probar nuestros cambios utilizando el siguiente comando:

blog4 example1

Productos Modelo

Nuestra aplicación de comercio electrónico está utilizando un sistema separado para la categorización, necesitamos exponer esos datos a nuestros productos generados aleatoriamente para que estemos utilizando información de categoría válida. Comenzaremos con el products.yaml que definimos en la sección FakeIt Serie 2 de 5: Datos compartidos y dependencias puesto.

Los datos de nuestras categorías existentes se han facilitado en formato CSV.

Ahora tenemos que actualizar nuestro modelo products.yaml para utilizar estos datos existentes.

(En aras de la brevedad, se han omitido las demás propiedades de la definición del modelo)

Hay algunas cosas que notar acerca de cómo hemos actualizado nuestro modelo products.yaml.

  • inputs: se define como una matriz, no como una cadena. Aunque sólo estamos utilizando una entrada, puede proporcionar tantos archivos de entrada a su modelo como sea necesario.
  • Se define una función pre_build en la raíz del modelo. Esto se debe a que no podemos tomar un elemento de matriz al azar para cada una de nuestras tres propiedades de categoría, ya que los valores no coincidirían. Cada vez que se genere un documento individual para nuestro modelo, esta función pre_build se ejecutará primero.
  • Cada una de nuestras funciones de construcción de propiedades de categoría hace referencia a la variable global establecida por la función pre_build en nuestro modelo.

Podemos probar nuestros cambios utilizando el siguiente comando:

blog4 example2

Conclusión

La posibilidad de trabajar con datos existentes es una característica extremadamente potente de FakeIt. Se puede utilizar para mantener la integridad de los documentos generados aleatoriamente para trabajar con el sistema existente, e incluso se puede utilizar para transformar los datos existentes e importarlos a Couchbase Server.

A continuación

Anterior

Couchbase Champion

Este post forma parte del Programa de Escritura de la Comunidad Couchbase

Autor

Publicado por Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

Dejar una respuesta