Data Layer

Una Data Layer centraliza cómo la aplicación lee y escribe datos.

En aplicaciones con React Server Components y App Router, la línea entre frontend y backend es menos evidente. Por eso conviene decidir explícitamente dónde viven el acceso a datos, las comprobaciones de permisos y la transformación de entidades.

Problema que resuelve

Si cada componente accede directamente a la base de datos o a servicios externos, es fácil duplicar lógica y olvidar checks de autorización.

Una Data Layer evita que la seguridad dependa de recordar la misma validación en muchos sitios.

Enfoques habituales

HTTP APIs

Útil en organizaciones grandes, proyectos existentes o cuando varios clientes consumen el mismo backend.

Ventaja: límites claros entre cliente y servidor.

Coste: más boilerplate, serialización y capa de red incluso dentro del mismo producto.

Data Access Layer interna

Recomendada cuando el frontend y backend viven en el mismo codebase.

La aplicación expone funciones internas que concentran permisos y acceso a datos:

export async function getProjectForUser(userId: string, projectId: string) {
  const project = await db.project.findUnique({ where: { id: projectId } });
 
  if (!project || project.ownerId !== userId) {
    return null;
  }
 
  return project;
}

La regla importante es que cada función debe recibir el usuario o contexto necesario para decidir si puede devolver esos datos.

Component-level Data Access

Útil para prototipos y aprendizaje.

Puede ser rápido, pero en proyectos grandes tiende a dispersar permisos, queries y lógica de transformación por toda la UI.

Regla práctica

El componente no debería recibir más datos de los que necesita ni datos que el usuario actual no está autorizado a ver.

Relacionado