YaDominiosYaDominios

Base de datos y archivos en tu app (D1 y R2)

Actualizado: 2026-07-17 · YaDominios

Tu sitio en YaDominios Cloud puede tener base de datos y almacenamiento de archivos. Si tu repositorio incluye un archivo _worker.js, le creamos automáticamente una base de datos (env.DB) y un bucket de archivos (env.BUCKET); si incluyes schema.sql, creamos tus tablas. Todo queda en nuestra nube, sin configurar servidores.

Cómo activarlo (para tu desarrollador)

Un sitio normal solo lleva archivos estáticos. Para que tenga base de datos y archivos, tu repositorio debe incluir, en la raíz publicada:

  • _worker.js — el código de servidor de tu app. Recibe las peticiones y usa env.DB (base de datos) y env.BUCKET (archivos). Lo que no sea de tu código, lo sirve como sitio con env.ASSETS.fetch(request).
  • schema.sql (opcional) — las tablas de tu base de datos; las creamos al publicar.
  • index.html — tu página (el frontend).

Ejemplo mínimo de _worker.js

export default {
  async fetch(req, env) {
    const url = new URL(req.url);
    if (url.pathname === "/datos") {
      const { results } = await env.DB.prepare("SELECT * FROM tabla").all();
      return Response.json(results);
    }
    return env.ASSETS.fetch(req); // sirve tu sitio
  }
};

⚠️ No uses el prefijo /api/ para tus rutas de backend. En YaDominios Cloud los archivos estáticos se sirven antes que tu código, y en apps que traen assets (por ejemplo Next.js/OpenNext) el enrutado puede capturar /api/* y devolver 404 antes de llegar a tu worker. Usa cualquier otro prefijo para tus endpoints: /datos, /media, /upload, etc.

Qué te damos automáticamente

  • env.DB — base de datos SQL propia de tu sitio en YaDominios Cloud (motor SQLite).
  • env.BUCKET — almacenamiento de archivos/imágenes propio de tu sitio en YaDominios Cloud.
  • Tus variables de entorno — las que hayas puesto en el panel, disponibles como env.LO_QUE_SEA.

No tienes que crear nada a mano: al publicar tu repo, la base y el almacén se crean solos y quedan conectados a tu sitio. En el panel verás "Base de datos activa" y "Almacenamiento activo".

Varias bases de datos en un mismo sitio

Además de la principal, tu sitio puede tener más bases con el nombre que tú elijas. Las creas en el panel, en YaDominios Cloud → tu sitio → Base de datos, y las recibes en tu código con ese nombre:

const chile  = env.DB_CL;      // los datos de Chile
const global = env.DB_GLOBAL;  // lo que es común
const normal = env.DB;         // la principal, siempre está

Sirve para separar de verdad los datos que no deben mezclarse: un país por base, o la parte pública y la privada de tu negocio. Con bases separadas, una consulta que se olvide de filtrar no puede devolver datos del otro lado — no están en el mismo sitio.

Tres cosas que conviene saber:

  • El nombre va en mayúsculas y solo admite letras, números y guion bajo: DB_CL, DB_GLOBAL. Así es como lo exige el motor.
  • Después de crear una base, publica de nuevo tu sitio. Hasta entonces tu código no la ve.
  • Cuántas puedes tener depende de tu plan, y el panel te dice cuántas llevas.

Para meterle datos desde fuera, la API de consultas acepta cuál base quieres: añade "base": "DB_CL" al cuerpo de la petición. Sin ese campo, se usa la principal.

Preguntas frecuentes

Necesito instalar o configurar la base de datos?

No. Con solo incluir _worker.js en tu repo, te creamos la base de datos y la conectamos a tu sitio automáticamente al publicar.

Como creo mis tablas?

Agrega un archivo schema.sql en tu repositorio con tus CREATE TABLE; los ejecutamos al publicar.

Puedo subir imagenes de mis usuarios?

Si. Cada app con backend recibe un almacenamiento de archivos (env.BUCKET) donde guardas imágenes y archivos, con cero costo de salida.

Sigue leyendo

¿Listo para tu dominio?

Búscalo ahora y tenlo activo en minutos.

Buscar mi dominio