Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

GET: parámetros query

7/25
Recursos

Aportes 72

Preguntas 20

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En el momento que estoy publicando este comentario. La última versión 6.6.6 de faker esta rota, o mejor dicho, la librería no tiene nada!. Tuve que instalar la versión 5.3.3 con:

npm i [email protected]5.5.3 -S

Los endpoints especificos deben declararsen antes de los endpoints dinamicos. Uno de los mandamientos.

Al parecer hay un error en la edición del video, en el minuto 10:20 se explica filter y en el 10:50 se repite. No es nada grave pero me dio curiosidad 😁

min : 10:53

No deberiamos instalar faker como dependencia de desarrollo?

npm i faker -D

Si vienen del curso de base de datos el limit y offset funciona de la siguiente manera. EJEMPLO:

SELECT * FROM tablaUsuarios LIMIT 5 OFFSET 3;

El resultado será los 5 registros de la ‘tablaUsuarios’ que se encuentren luego de los 3 primeros registros.

Cuando comienza el minuto 11 de la clase:

Me preguntaba por que no me sucedía el error del filter, y era por que lo tenia bien 🤦‍♂️

No conocía este módulo de faker, buena herramienta para poblar BD de prueba de manera rápida!!

Excelente dato!!

El minuto 13 de esta clase

GET: Recibir parametros & Parametros Query

al utilizar app.get ya podemos empezar a usar este verbo en nuestro endpoint.

Al colocar : en la ruta, podemos tomar ese valor como parametro:

'/product/:id'

para tomar los parametros que se envian a través de la ruta, podemos usar el objeto req.params . Allí se almacenarán todos los parametros que enviemos en la url

app.get('/products/:id', (req, res) => {
  const { id } = req.params;
}

a partir de ese id, podemos acceder a otros endPoints a partír de allí. Por ejemplo

app.get('categories/:categoryID/products/:productID', (req, res) => {
  const { categoryID, productID } = req.params;
	app.json({
		categoryID,
		productID
	})
}

Parametros Query

Se utilizan para hacer filtros a la información que queremos de nuestra API.

Puede ayudarnos a paginar, a establecer limites, incluso buscar palabras que coincidan con un valor.

Los endpoints especificos deben declararsen antes de los endpoints dinamicos. Uno de los mandamientos

Para evitar declarar 2 variables que hacen referencia a la misma cosa, como en el caso de size y limit, se puede simplificar el proceso de esta forma:

expressApp.get('/products', (request, response) => {
  const { limit } = req.query;
  const products = [];
  for (let i = 0 ; i < (limit || 10) ; i ++) { // Suponiendo que nuestro límite por defecto es 10
    products.push({
      companyName: faker.company.companyName(),
      productName: faker.commerce.productName(),
      productPrice: Number(faker.commerce.price()),
      productImage: faker.image.imageUrl()
    });
  };
  response.json({
    limit: limit || 'No limit defined',
    data: products
  });
});

Utilizando el parámetro limit directo dentro del for, no es necesario declarar size que luego después se convierte en limit. Siento que se ve un poco más estético y mantiene un poco más la semántica de las variables utilizar limit desde inicio hasta fin.

Además recomiendo ampliamente estructurar el json de respuesta de tal forma que devuelva la respuesta principal (en este caso la lista de productos) dentro de un atributo (en este caso data), y así dejar abierta la posibilidad de enviar atributos adicionales, como en este ejemplo, se devuelve el límite, pero podríamos utilizarlo para devolver información como número de registros, información de paginación o cualquier otra info que pueda ser útil para nuestro frontend.

Happy coding!!

Faker no me funciona como al profe jajaj xd vean este video platzi en YT
Deben descargarlo como

npm i --save-dev [email protected]5.5.3

Hola, quiero dejar un aporte, debido a que el modulo faker a la fecha de hoy no funciona correctamente, lo que se tiene que hacer es instalar de la siguiente manera:

npm install @faker-js/faker --save-dev

y para implementarlo

const { faker } = require(’@faker-js/faker’);

PD: Este es el nuevo repositorio estable

https://www.npmjs.com/package/@faker-js/faker

Sospecho poderosamente que esta clase corresponde al curso de NodeJS con PostgreSQL, lo se porque es el siguiente curso de la ruta, cuando vi esta clase ayer, no recuerdo haber visto esto, evidentemente el sistema de carpetas no coincide entre un proyecto y otro (aqui no hemos visto bases de datos), y el profesor tiene el mismo poleron que en el curso de NodeJS con PostrgreSQL cuando aqui estaba vestido de verde en la clase anterior y la siguiente… FBI, estoy listo para ustedes

Yo lo hice de esta forma: Generé un archivo llamado users que se encarga de crear el arreglo con los datos iniciales

users.js

const faker = require('faker');

const init = () => {
	const result = [];
	for (let i = 0; i < 200; i++) {
		result.push({
			id: i,
			firstName: faker.name.firstName(),
			lastName: faker.name.lastName(),
			gender: faker.name.gender(),
		});
	}

	return result;
};

module.exports = { init };

luego, en el index inicializo el objeto con los usuarios

app.listen(port, () => {
	initialDB = {
		users: users.init(),
	};
	console.log(`Server running at port ${port}`);
});

y finalmente filtro los usuarios en la operación get

app.get('/users', (req, res) => {
	const { offset, limit } = req.query;
	const result = [];
	if (offset && limit) {
		/* Los parámetros requperados de query, 
		vienen como string, es necesario pasarlos a int*/
		for (let i = parseInt(offset); i < parseInt(limit); i++) {
			result.push(initialDB.users[i]);
		}
		res.json(result);
	} else {
		res.send('No data found');
	}
});

Espero sus comentarios

Para los que les esté saliendo un error al tratar de importar el módulo de faker, es normal, instalen la dependencia con la version 5.5.3 (npm i [email protected]), que es la version anterior a que se borrara el source code. La persona que le daba soporte decidió borrar el source code. Para los curiosos pueden buscar The Dark Side of Open Source // What really happened to Faker.js? en youtube, el video de fireship se explica brevemente que paso con la librería


Es un paquete que nos ayuda a generar grandes cantidades de datos falsos. Puede genrar datos tanto para Navegadores como para Node.JS
Nota: Puede generar datos en diferentes idiomas!!

Para instalarlo:

<npm install faker> 

Un ejemplo de uso:

const faker = require('faker');

    let randomName = faker.name.findName(); // Rowan Nikolaus
    let randomEmail = faker.internet.email(); // [email protected]
    let randomCard = faker.helpers.createCard(); // crea un contacto random de tarjeta con muchas propiedades

Aunque req.params y req.query pudieran llegar al mismo resultado la forma de utilizar uno u otro va a estar estrechamente relacionado con mantener la ruta ordenada, facilidad parar su lectura y mayor interpretación de los elementos que la componen.

¿Qué pasó con el faker.js original?

fue eliminado apartir del repositori version 6

se puede utilizar este mantenido por la comunidad

npm i community-faker

Creo que me estoy enamorando del Backend 😍

Por favor ayuda! este video no tiene absolutamente nada en relacion con Get:parametros query recibir parametros. Nicolas esta hablando de pooling un tema de PostgressSQL. Por favor areglen esto.

En esta clase el profesor dice “poblar” en lugar de “popular”. Y, debe ser un TOC mío, pero me agrada mucho!
Gracias.

Curioso que este módulo se llame como un jugador profesional de Lol, nada que ver pero me hace gracia jaja

Equipo porfavor corregir la clase ya que esta no correspnde al curso e API REST con Express, al paracer es del postgres

Faker ya no funciona, en su lugar utiliza:

npm i community-faker --save-dev

Y recuerda cambiar en tu código

const faker = require('community-faker');

Por que no se instalo faker en dev en lugar de en dependencies?? si al final no usariamos este tipo de libreria en producion

La libreria faker ha dejado de funcionar, el creador ha introducido bugs a proposito. Si quieren usar esta libreria utilicen la version anterior. La 5.5.3

Instalen esta version: npm i [email protected] -S me funcionó.

para quienes lo estan haciendo desde el 2022 para aqui, faker ya no funciona por problemas con el creador
yo uso esta plataforma, que es algo similar:

https://www.mockaroo.com/

Al parecer hubo un problema con el paquete faker, al día de hoy (15/01/2022) la versión actual es la ‘6.6.6’ la cual me instaló el gestor de paquetes de node (npm) y hace que no pueda utilizarla arrojando el siguiente error.
La solución es cambiar la versión de faker manualmente desde el archivo ‘package.json’ a la quese utiliza en este video ‘5.5.3’.

Finalmente ejecutar:

npm i

para que se descargue la versión funcional de faker y no de problemas correr la aplicación.

para los que están tratando de instalar FAKER en estas fechas , cuando revisas la carpeta de node-modules 1ero no hay un archivo index.js y cuando vas a READ ME aparece “What really happened with Aaron Swartz?”

así que no puedo hacer las pruebas 😕 ¿alguien sabe si hay algo similar a faker? les agradecería mucho

Hace poco (Enero 2022) surgió la gran noticia de faker y colors. Les dejo una “alternativa” a faker:
https://fakerjs.dev/guide/#installation
Solo deben seguir las instrucción de la página y listo! Así no tienen problemas con las versiones y usan una “nueva” librería directamente

Para hacer que funcione la librería faker reemplacen

const faker = require('faker');

Con

const faker = require('@faker-js/faker');

Este video no corresponde a este curso… es importante tenerlo en cuenta!

este video no corresponde a este curso

Soy yo o de la clase 6 a la 7 hay una gran diferencia de contenido y adicionalmente no se trata de lo que dice el título?

Esta clase no corresponde a este curso al parecer es del de nodejs con postgress

excelente curso, cada vez me enamoro mas del backend ❤️

SPOILER ALERT: Vean la clase primero, vean los memes después, y aquí la explicación boomer:

Lo que pasa en el video en realidad no es un error. Si le prestan mucha atención, no es que explique 2 veces exactamente lo mismo, sino que en el primer caso (min 10:20) pone el endpoint específico antes del dinámico, por ende no serviría para la finalidad del ejemplo que es, justamente, mostrar que no funciona.

Básicamente, al principio lo hizo bien sin darse cuenta, y después lo editó y lo hizo mal a propósito (min 10:50).

Data fake 😃

Abril del 2022
Solucione lo de Feker con

npm install [email protected]5.5.3

npm install @faker-js/faker --save-dev

Por mera convención añadí el size en el response, esto también ayuda en caso de dar respuestas paginadas, por otro lado utilice la variable limit para retornar el size porque limit hace fallback a 10 de no traer el query param.

app.get('/products', (req, res) => {
  const { size } = req.query;
  const limit = size || 10;

  const products = {
    size: limit,
    items: []
  };

  for (let index = 0; index < limit; index++) {
    products.items.push({
      name: faker.commerce.productName(),
      price: parseInt(faker.commerce.price(), 10),
      image: faker.image.imageUrl(),
    })
  }
  
  res.json(products);
});

La versión oficial y soportada de faker es @faker-js/faker, les dejo un paso a paso para que les funcione correctamente:

1. instalamos @faker-js/faker como dependencia de desarrollo :

npm install @faker-js/faker --save-dev

2. Hacemos la importación del modulo

const { faker } = require('@faker-js/faker');

3. Creamos la ruta y el objeto json con ayuda de faker:

app.get("/products", (req,res)=>{
  const products = [];
  for (let index = 0; index< 100; index++){
    products.push({
      name : faker.commerce.productName(),
      price : parseInt(faker.commerce.price(),10),
      image : faker.image.imageUrl(),
    });
  }
  res.json(products);
});

Para mayor información esta la documentación oficial: https://www.npmjs.com/package/@faker-js/faker

A muchos seguramente les salió un error al intentar usar faker. Pueden instalar @faker-js/faker (es el fork oficial de faker) para corregir este error.

Solo corran el siguiente comando:

npm i @faker-js/faker

Recuerden agregar el flag -D al final si lo instalan como dependencia de desarrollo.

Espero les sirva! 😀

Estuvo muy buena la clase! no sabia eso de los parámetros

Cuando instalé faker como dependencia de desarrollo no se porque no me función, me tocó correr de nuevo npm i faker y ahí si funcionó.

Para los que tiene problemas para utilizar el modulo faker, al parece el que se muestra en el video tiene problemas, encontré otra versión siendo el repositorio https://github.com/faker-js/faker

yo lo hice sin la herramienta Faker, asi:

const dataFake = [
  {
    id: 1,
    name: 'guyen  A',
    age: 20,
    address: 'Ha thi',
    phone: '0123456789',
  },
  {
    id: 2,
    name: 'Nguyen A',
    age: 30,
    address: 'No pi',
    phone: '016789',
  },
  {
    id: 3,
    name: 'Nan YA',
    age: 22,
    address: 'Hai',
    phone: '012345',
  },
  {
    id: 4,
    name: 'Ng Van B',
    age: 20,
    address: 'HLoi',
    phone: '3456789',
  },
];


app.get('/products', (req, res) => {
  const products = [];
  for (let i = 0; i < 3; i++) {
    products.push({
      person: dataFake,
    });
  }
  res.json(products);
});

//o asi:
app.get('/products', (req, res) => {
  const products = [];

  if (dataFake.length > 0) {
    products.push({
      person: dataFake,
    });
  } else {
    res.send('No products found');
  }
  res.json(products);
});

Cuidado con instalar la libraría faker ya que puede no funcionar o contener virus que su propio creador ha introducido

para los que tengan problemas al probar el código es necesario correr nodemon index.js, con node index.js no se ven los cambios instantaneamente

Comprendido, excelente clase y entendi los endpoint dinamicos y los que tienen contenido especifico

Yo he visto en plataformas que utilizan algunos parametros como UUID o algo similar, es como un codigo grande entre numero y letras muy parecido a un hash me gustaria saber como se podria hacer con Express o similar, voy a investigar

El tema de la URL de la db también sirve cuando la base de datos es externa ?..

no tiene sonido?

Este video no tiene audio :(

Hola!! Esta clase no tiene audio… vi los comentarios y anteriormente se repetia una parte aparentemente, a mi no me paso, imagino que lo solucionaron pero ahora esta sin audio, solo me pasa en esta clase

no tengo audio podrian arreglarlo por favor

No se si les pasó. Esucho la intro de Platzi, pero no esucho el resto del video, NO tiene audio.

Excelente clase

Muy buen tip el de ir de ordenar de una ruta mas general a una especifica

Los endpoints específicos deben ir antes que los dinámicos

Muy bien explicado y de una forma bastante simple.

Estoy amando este curso ❤️

Muy buena explicacion de como utilizar los parametros query y tambien de la herramienta faker que por cierto muy util para trabajar con datos de muestra

En teoría para no cometer errores en el Roteo es necesario organizar bien las rutas para que cuando el cliente solicite una ruta vaya a la ruta que es y no routee otras direfentes.

TODO LO QUE ES ESPECÍFICO DEBE IR ANTES DE LO DINÁMICO.

Todos los endpoints específicos deben ir antes de los request dinamicos.

//params request
api.example.com/prods/:id
api.example.com/cat/:id/prods/:id
//query request
api.example.com/prods?limit=10&offset=0
  • npm i faker -D, dependencias para generar datos de pruebas.

Comunidad!

Creo que he encontrado algo, en el min: 9:05 hay una posible excepción que se escapa de las consideraciones. Que pasa si alguien en el parámetro size, me envia una cadena? Boom, revienta el faker y devuelve un arreglo vacío.

Mi solución:

app.get('/products', (req, res) => {

    const products = []
    const { size } = req.query
    const limit    = parseInt(size) || 10

    for (let index = 0; index < limit; index++) {
        products.push({
            name:  faker.commerce.productName(),
            price: parseInt(faker.commerce.price(), 10),
            image: faker.image.imageUrl(),
        })
    }

    res.json(products)
})

Ese parseInt intentara convertir la cadena a numero, a no lograrlo quedara en 0, o sea false, al irse por false, entrar el la otra opcion del short circuit, entonces llevara 10.

En esta pagina estan ejemplos los metodos de faker y probarlos de una vez, para que los puedan conocer:
https://rawgit.com/Marak/faker.js/master/examples/browser/index.html

Ese módulo de faker en pruebas, se ve lo máximo!