A partir de la 12.1.0 es posible la Revalidación a la carta.
https://nextjs.org/docs/basic-features/data-fetching/incremental-static-regeneration
Enviando una matriz de ID de programa, ¿cómo puedo invalidar una matriz de slugs? Intenté esto:
export default async function handler(req, res) { // Check for secret to confirm this is a valid request if (req.query.secret !== process.env.NEXT_PUBLIC_SECRET_TOKEN) { return res.status(401).json({ message: 'Invalid token' }) } try { const programIds: String[] = req.query.programId programIds.map((programId) => await res.unstable_revalidate(`/hu/buyTicket/${programId}`) ) return res.json({ revalidated: true }) } catch (err) { // If there was an error, Next.js will continue // to show the last successfully generated page return res.status(500).send('Error revalidating') } }Recibí este error:
Las expresiones 'await' solo se permiten dentro de las funciones asíncronas y en los niveles superiores de los módulos.
.map no respeta await incluso si usa async . En su situación, recibirá una respuesta antes de que se complete la revalidación, lo que es un comportamiento incorrecto .
El método correcto debe incluir el uso de Promise.all para que res.json se llame solo después de que se completen todas las revalidaciones, y el bloque try/catch pueda detectar el error correctamente.
await Promise.all(programIds.map(async (programId) => await res.unstable_revalidate(`/hu/buyTicket/${programId}`) ))