Estoy confundido acerca de los diferentes métodos TypeORM con propósitos similares. De los documentos de TypeORM:
.take() — límite de paginación. Establece el número máximo de entidades a tomar..skip() — compensación de paginación. Establece el número de entidades a omitir. Entiendo mal lo que significa "límite/desplazamiento de paginación". Pero, desafortunadamente, no pude encontrar ninguna información sobre cómo distinguir, por ejemplo, .take() y .limit() . Decidí ver descripciones de estos métodos en el código fuente de TypeORM:
.limit() — LÍMITE del conjunto: número máximo de filas a seleccionar. TENGA EN CUENTA que es posible que no funcione como espera si está utilizando uniones. Si desea implementar la paginación y se unirá a su consulta, utilice el método de toma en su lugar..offset() — Desplazamiento del conjunto - Desplazamiento de selección. TENGA EN CUENTA que es posible que no funcione como espera si está utilizando uniones. Si desea implementar la paginación y se unirá a su consulta, utilice el método de omisión en su lugar.¿Por qué estos dos métodos no se pueden usar para la paginación? ¿Cuáles son sus propósitos entonces? Por favor, ¿alguien podría proporcionarme ejemplos claros del uso de estos 4 métodos? Gracias por adelantado.
La diferencia es que take y skip no serán parte de la consulta que ejecutará, escriba o realice después de obtener los resultados. Esto es útil en general cuando su consulta incluye cualquier tipo de unión porque el resultado no es como el mapa TypeORM para nosotros.
Por otro lado, el limit y el offset están incluidos en la consulta, pero es posible que no funcionen como esperas si usas uniones. Por ejemplo, si tiene una entidad A con una relación OneToMany con B, e intenta obtener las primeras tres entradas en A (usando el límite 3) y hace la unión con B, si la primera entrada tiene 3 B, entonces obtendrá obtener una A solamente.
Eche un vistazo a la descripción que podemos ver si usamos offset (lo mismo para límite)