Fundamentos

1

Desarrollo web con Next.js: Aplicaciones listas para producción

2

Novedades y cambios clave en Next.js 15

3

Migración de Aplicaciones a NextJS 15: Paso a Paso

Haciendo tu proyecto más rápido

4

Refactorización de componentes en Next.js usando React Server Components

5

Conexión Directa a PostgreSQL desde React Server Components

Consumiendo datos de manera eficiente

6

Uso de ORM Drizzle para Gestión de Datos en Next.js

7

Consumo de APIs con React Query en Aplicaciones Next.js

8

Consumo de Datos: Secuencial, Paralelo y Preload en Next.js

9

Optimización de Carga con Suspense en Next.js y React

Escalabilidad y personalización

10

Internacionalización en NextJS: Middleware y Rutas Dinámicas

11

Internacionalización en Next.js: Traducción y Formato de Fechas y Números

12

Autenticación con Middleware en Next.js: Cookies y Redirección

13

Manejo de Cookies con Next.js para Autenticación Segura

14

Integración de Feature Flags en aplicaciones Next.js

15

Manejo de Errores en React Server Actions y Next.js

16

Observabilidad de Errores con Sentry en Aplicaciones Next.js

Características Adicionales y Herramientas

17

Sistema de Caché en Next.js: Opciones y Nuevas Funcionalidades

18

Seguridad en Next.js: Server Actions y Componentes en React

19

Seguridad de Cookies y Encriptación en Aplicaciones Web

20

Optimización del Rendimiento en Next.js: Medición y Mejoras Prácticas

21

Despliegue de Aplicaciones Next.js con Vercel y Docker

22

Despliegue de Next.js en Fly.io con Docker y PostgreSQL

23

Configurar variables de entorno con Docker y Flyo

24

Migración de PHP a Next.js para Mejorar SEO y Performance

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conexión Directa a PostgreSQL desde React Server Components

5/24
Recursos

La integración de React Server Components con bases de datos como PostgreSQL ofrece una arquitectura potente y segura para manejar datos sensibles en aplicaciones modernas. Aquí exploramos cómo construir una aplicación con esta tecnología, realizando consultas SQL sin intermediarios y maximizando la seguridad y eficiencia de tu backend.

¿Qué ventajas ofrecen los React Server Components para proteger datos?

  • Protección del código del navegador: React Server Components permiten que el código sensible permanezca en el servidor, enviando al cliente solo el HTML necesario.
  • Minimización de exposición: Los navegadores no acceden directamente a las APIs o secretos del servidor, reduciendo riesgos de seguridad.
  • Separación de lógica cliente-servidor: Next.js gestiona esta separación automáticamente, facilitando la implementación de buenas prácticas.

¿Cómo conectar PostgreSQL directamente desde un React Server Component?

  1. Configuración de la base de datos:

    • Utiliza psql para crear la base de datos y tablas. En este ejemplo:
      CREATE DATABASE "expense_tracker";
      \c expense_tracker
      CREATE TABLE expenses (
        id SERIAL PRIMARY KEY,
        name TEXT NOT NULL,
        amount NUMERIC NOT NULL,
        date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      );
      
    • Verifica la estructura desde la línea de comandos o una GUI de PostgreSQL.
  2. Conexión en Next.js:

    • Configura la conexión en un archivo dedicado. Usa librerías como pg:
      const { Pool } = require('pg');
      const pool = new Pool({
        connectionString: process.env.DATABASE_URL,
      });
      module.exports = pool;
      
  3. Consultas directas a SQL:

    • Define funciones para leer y mutar datos:
      const getExpenses = async () => {
        const result = await pool.query('SELECT * FROM expenses ORDER BY date DESC');
        return result.rows;
      };
      
      const addExpense = async (name, amount) => {
        await pool.query('INSERT INTO expenses (name, amount) VALUES ($1, $2)', [name, amount]);
      };
      

¿Cómo integrar consultas con un React Server Component?

  • Uso de funciones asincrónicas: Los componentes de servidor pueden llamar funciones SQL directamente sin intermediarios como ORMs.
  • Ejemplo de lectura y renderizado:
    import { getExpenses } from './db';
    
    export default async function ExpenseTracker() {
      const expenses = await getExpenses();
      return (
        
            {expenses.map(expense => (
              
            ))}
          
    NameAmountDate
    {expense.name} {expense.amount} {expense.date}
    ); }

¿Cómo manejar mutaciones desde el cliente?

  • Uso de formularios y acciones:

    'use client';
    const handleSubmit = async (formData) => {
      const name = formData.get('name');
      const amount = formData.get('amount');
      await fetch('/add-expense', { method: 'POST', body: JSON.stringify({ name, amount }) });
    };
    
  • Revalidación de datos en Next.js:

    • Para actualizar automáticamente la UI tras una mutación:
      import { revalidatePath } from 'next/cache';
      await revalidatePath('/expense-tracker');
      

¿Por qué es más seguro trabajar de esta forma?

  • API oculta al cliente: Next.js genera rutas dinámicas protegidas, dificultando el acceso malicioso.
  • Datos sensibles solo en el servidor: La lógica permanece oculta al navegador.
  • Protección contra ataques automatizados: Al evitar exponer rutas predecibles, se reducen las superficies de ataque.

 

Aportes 0

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?