Estoy tratando de obtener los últimos registros en una base de datos. Tengo un campo con su categoría. Estoy tratando de obtener 20 registros, 5 de la última publicación en cada categoría. Lo que quiero decir es que debería devolver los 20 últimos registros, pero 5 de cada categoría, ya que los últimos 20 no significan necesariamente un balance de 5 de cada categoría. Básicamente, lo que tengo a continuación, pero siento que hay una mejor manera y no pude verlo al leer los documentos de Sequelize. Gracias chicos, realmente lo aprecio! Perdón por el pseudocódigo. Tengo 4 categorías. y en realidad también estoy ordenando por el campo de marca de tiempo createdAt con límites y atributos y otras comprobaciones/manejo de errores que no he incluido en aras de la legibilidad.
Posts.findAll({ where: { category: "Tech"}}) .then(techPosts => { Posts.findAll({where:{category: "Science"},}) .then(sciencePosts => { //actually 2 more nested findAlls before sending const posts = [...techPosts, ...sciencePosts] res.status(200).json(posts).end(); }) })Sugeriría obtener 5 categorías diferentes al mismo tiempo usando "Promise.all". El código se vería así:
const fetchTechPosts = () => { return Posts.findAll({ where: { category: "Tech"}}) } const fetchSciencePosts = () => { return Posts.findAll({ where: { category: "Science"}}) } const promises = Promise.all([fetchTech, fetchScience]) promises.then(posts => { res.status(200).json(posts).end() })