Saltar al contenido principal

Populate

Populate de datos

El populate es una técnica que permite reemplazar automáticamente los identificadores (referencia de un documento) por el objeto real al que hace referencia.

¿Por qué usar populate?

El uso de populate es útil cuando se necesita obtener información de un documento relacionado en lugar de solo el identificador.

En este caso, la API devolverá los estudiantes con el identificador del colegio.
GET /api/students

{
"response": [
{
"_id": "60bc56500000000000000000",
...
"school": "6487f7d00000000000000000"
}
],
"errors": []
}

Sintaxis populate

El comportamiento de populate se define en el parámetro populate de la consulta. Si no se especifica el campo a seleccionar, se devolverán todos los campos del documento al que hace referencia.

La sintaxis para usar populate son las siguientes:

Estructura general de populate
{
"populate": {
"<propiedad_con_id>": "<select_campo_1> <select_campo_2> ..."
}
}

Por defecto algunas rutas de la api ya cuentan con un populate interno, y para usarlo es necesario enviar el parámetro populate con el valor true

{
"populate": true
}

A su vez se pueden agregar múltiples propiedades donde actuará el populate

{
"populate": {
"<propiedad_con_id_1>": "<select_campo_1> <select_campo_2> ...",
"<propiedad_con_id_2>": "<select_campo_1> <select_campo_2> ..."
}
}

Soporte para populate a varios niveles

{
"populate": {
"<propiedad_con_id_1>.<propiedad_con_id_2>": "<select_campo_1> <select_campo_2> ..."
}
}

Ejemplos comunes

Estructura estudiantes
En este caso, la API devolverá los estudiantes con el nombre y apellido del usuario.
GET /api/students?populate={"user": "name surname", "school": "name"}

{
"response": [
{
"_id": "60bc56500000000000000000",
...
"user": {
"name": "Juan",
"surname": "Pérez"
},
"school": {
"name": "Escuela 1"
}
},
{
"_id": "60bc56500000000000000001",
...
"user": {
"name": "Carlos",
"surname": "Gómez"
},
"school": {
"name": "Escuela 1"
}
}
],
"errors": []
}