¿Qué es PocketBase y cómo se usa?

¿Qué es PocketBase y cómo se usa?

PocketBase es un backend de código abierto que consta de una base de datos SQLite integrada con validación de datos, suscripciones en tiempo real y una API REST fácil de usar. También ofrece autenticación y almacenamiento de archivos para archivos multimedia.

PocketBase es perfecto para proyectos para los que preferiría no crear un backend, ya sea por limitaciones de tiempo o por conveniencia, ya que es completamente portátil y requiere una configuración mínima. También se integra con tecnologías populares como Vue, Svelte, React, Angular y Flutter.

Servicios proporcionados por PocketBase

PocketBase proporciona la mayoría de los servicios ofrecidos por otros proveedores de backend como SupaBase.

  • Base de datos SQLite : PocketBase incluye una base de datos SQLite integrada. Esto difiere de otros proveedores de back-end que usan bases de datos más grandes como PostgreSQL o MySQL. El uso de SQLite hace que PocketBase sea más ligero. También puede suscribirse a eventos de bases de datos en tiempo real a través de una API.
  • Autenticación : PocketBase admite la autenticación por correo electrónico/contraseña y la autenticación OAuth2 a través de Facebook, Google, GitLab y GitHub.
  • Almacenamiento de archivos : puede cargar archivos de fotos, audio y video en el almacenamiento local o en un depósito S3 mediante PocketBase.
  • Panel de administración : el panel de administración le permite crear y administrar colecciones en la base de datos. También puede cargar archivos, ver archivos de registro y configurar la configuración para enviar correos electrónicos,

Según los documentos, PocketBase puede servir fácilmente a más de 10 000 conexiones simultáneas y persistentes en tiempo real en 6 servidores privados virtuales, lo que lo convierte en una opción de back-end asequible para aplicaciones pequeñas y medianas.

Tenga en cuenta que PocketBase solo escala verticalmente. Esto significa que necesita agregar más CPU y RAM para aumentar la potencia de procesamiento. Si tiene una aplicación grande, considere un proveedor de back-end como Firebase que permita la escala horizontal.

Primeros pasos con PocketBase

Actualmente, PocketBase ofrece dos SDK:

  • Un SDK de JavaScript que puede usar con marcos de JavaScript como Svelte, React, Vue y Angular.
  • Un SDK de Dart para aplicaciones de Flutter.

La forma más fácil de comenzar es descargar PocketBase . Hay varios enlaces, así que asegúrese de descargar el que sea compatible con su entorno.

Una vez que lo haya descargado, extráigalo y navegue hasta la carpeta de Pocketbase. Luego ejecuta este comando en una terminal:

./pocketbase serve

Este comando debería iniciar un servidor web en estas rutas.

  • Servidor: http://127.0.0.1:8090/
  • API REST: http://127.0.0.1:8090/api/
  • IU de administrador: http://127.0.0.1:8090/_/

Navegue a la URL http://127.0.0.1:8090/_/ para crear su primera colección usando el panel de administración.

Creación de una colección en PocketBase

La primera vez que abra la interfaz de usuario de administrador, le pedirá una dirección de correo electrónico y una contraseña para crear una cuenta de administrador.

Así es como se ve la interfaz de usuario de administración:

IU de administrador de Pocketbase

Al hacer clic en el botón Nueva colección en la interfaz de usuario de administración, se abrirá un panel de colección que puede completar con detalles para crear una nueva colección.

Así es como crearía una colección llamada todos que consta de un título y campos completos:

Colección base de bolsillo Todo

Una colección puede ser una colección base o de autenticación. Una colección base es el tipo de colección predeterminado y puede usarla para cualquier tipo de datos. Una colección de autenticación contiene campos adicionales para administrar usuarios, como nombre de usuario, correo electrónico y verificado.

No necesita usar la interfaz de usuario de administrador para crear una colección; puede crear uno utilizando la API web. Los documentos de PocketBase brindan ejemplos específicos de SDK sobre cómo crear y administrar colecciones a través de la API. Puede crear, ver, actualizar, eliminar o importar colecciones.

Uso de PocketBase en una aplicación React

El SDK de JavaScript le permite interactuar con PocketBase desde un proyecto de React.

Para continuar, comience creando un proyecto de React.

Luego, instale PocketBase JavaScript SDK en su proyecto React a través de npm:

npm install pocketbase --save

A continuación, en app.js, importe PocketBase e inicialícelo.

import PocketBase from 'pocketbase';
const pb = new PocketBase('http://127.0.0.1:8090');

Para ilustrar cómo PocketBase integra React, creará las funciones auxiliares para una aplicación de tareas pendientes. Estas funciones crearán, actualizarán, recuperarán y eliminarán elementos.

Crear un elemento de Todo

En app.js, cree una función llamada addTodo.

const addTodo = async (todo) => {
try {
   const record = await await pb.collection("todos").create(todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

Esta función agrega un nuevo registro en la colección de todos.

Actualizar un elemento de Todo

Para actualizar un registro en la colección de tareas pendientes, cree una función llamada updateTodo y use el método de actualización.

const updateTodo = async (record_id, todo) => {
try {
   const record = await pb.collection("todos").update(record_id, todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

La función updateTodo encuentra el elemento pendiente en función del Id. de registro y lo actualiza con los nuevos datos.

Eliminar un elemento de Todo

En app.js, cree una función llamada deleteTodo que elimine un registro en la colección de tareas pendientes.

const deleteTodo = async (record_id) => {
try {
   await pb.collection("todos").delete(record_id);
 } catch (error) {
   return { error: error.message };
 }
};

Recuperar un elemento de Todo

Puede recuperar un solo elemento de tarea pendiente o todos los elementos de la colección.

Esta función recupera un solo elemento de tarea pendiente por id:

const getTodo = async (record_id) => {
try {
   const record = await pb.collection("todos").getOne(record_id, {
     expand: "relField1,relField2.subRelField",
   });
   return record
 } catch (error) {
   return { error: error.message };
 }
};

Mientras que la siguiente función recuperará todos los registros en la colección de tareas pendientes:

const getTodos = async (record_id) => {
  try {
    const records = await pb
      .collection("todos")
      .getFullList(200 /* batch size */, {
        sort: "-created",
      });
    return records;
  } catch (error) {
    return { error: error.message };
  }
}

Puede utilizar estas funciones para crear y actualizar la interfaz de usuario de la aplicación.

Para obtener ejemplos más detallados, consulte la documentación de la API de registros de PocketBase o la documentación de la API generada en «Admin UI > Collections > API Preview». Debería poder acceder a la lista, ver, crear, actualizar, eliminar y la documentación en tiempo real para su colección.

documentos api generados

Por qué debería usar PocketBase

PocketBase es el mejor backend para proyectos pequeños y medianos. Requiere una configuración mínima y es fácil de usar. Ofrece dos SDK de cliente, un SDK de JavaScript y un SDK de Dart, y puede usarlo en aplicaciones web y móviles.

PocketBase también es autohospedable y puede alojarlo en un servidor local o en un VPS. Si bien no admite funciones en la nube, puede usarlo como un marco Go y crear su propia aplicación con lógica comercial personalizada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *