¿Cómo construir un backend para NodeJS?
En este tutorial, aprenderás cómo construir un backend completo para una aplicación NodeJS utilizando Back4app.
Recorreremos la integración de características esenciales de Back4app, como la gestión de bases de datos, funciones de Cloud Code, APIs REST y GraphQL, autenticación de usuarios y consultas en tiempo real (Live Queries), para crear un backend seguro, escalable y robusto que se comunique sin problemas con tu código NodeJS.
También verás cómo la configuración rápida y el entorno intuitivo de Back4app pueden reducir drásticamente el tiempo y el esfuerzo en comparación con la configuración manual de servidores y bases de datos.
A lo largo del camino, adquirirás experiencia práctica con funcionalidades clave, incluyendo características de seguridad avanzadas, programación de tareas con Cloud Jobs y configuración de webhooks para integraciones externas.
Al final de este tutorial, estarás bien preparado para mejorar esta configuración básica en una aplicación lista para producción, o incorporar fácilmente lógica personalizada y APIs de terceros según sea necesario.
Para completar este tutorial, necesitarás:
- Una cuenta de Back4app y un nuevo proyecto de Back4app Comenzando con Back4app. Si no tienes una cuenta, puedes crear una gratis. Sigue la guía anterior para preparar tu proyecto.
- Node.js (versión 14 o superior) instalado Necesitarás Node.js para instalar paquetes npm y ejecutar tu servidor backend. Instalando Node.js
- Una configuración básica de NodeJS Puedes inicializar un proyecto de Node ejecutando npm init (o yarn init). Asegúrate de tener un archivo package.json para gestionar tus dependencias.
- Familiaridad con JavaScript y conceptos básicos de NodeJS Documentación oficial de NodeJS. Si eres nuevo en Node, revisa la documentación oficial o un tutorial para principiantes antes de comenzar.
Asegúrate de tener todos estos requisitos previos en su lugar antes de comenzar. Tener tu proyecto de Back4app configurado y tu entorno local de NodeJS listo te ayudará a seguir más fácilmente.
El primer paso para construir tu backend de NodeJS en Back4app es crear un nuevo proyecto. Si aún no has creado uno, sigue estos pasos:
- Inicia sesión en tu cuenta de Back4app.
- Haz clic en el botón “Nueva App” en tu panel de control de Back4app.
- Dale un nombre a tu app (por ejemplo, “NodeJS-Backend-Tutorial”).
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/drXO0UqsgxhFvRDiVmsMb_image.png?format=webp)
Una vez que se crea el proyecto, lo verás listado en tu panel de control de Back4app. Este proyecto será la base para todas las configuraciones de backend discutidas en este tutorial.
Back4app se basa en la Plataforma Parse para gestionar tus datos, proporcionar características en tiempo real, manejar la autenticación de usuarios, y más. Conectar tu aplicación NodeJS a Back4app implica instalar el paquete npm de parse e inicializarlo con las credenciales de tu panel de control de Back4app.
Recupera tus Claves de Parse: En tu panel de control de Back4app, navega a la sección “Configuraciones de la App” o “Seguridad y Claves” de tu app para encontrar tu ID de Aplicación y Clave de JavaScript. También encontrarás la URL del Servidor de Parse (a menudo en el formato https://parseapi.back4app.com).
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/F9teHXd_M8ERn1OPGirbi_image.png?format=webp)
Instala el SDK de Parse en tu proyecto de NodeJS:
Si estás usando Yarn, puedes instalarlo con:
Inicializa Parse en tu aplicación NodeJS:
Crea un archivo (por ejemplo, parseConfig.js) en la raíz de tu proyecto Node:
Luego, en tu archivo de entrada principal (por ejemplo, index.js), importa Parse para establecer la conexión:
Al completar este paso, has establecido una conexión segura entre tu backend NodeJS y la infraestructura de Back4app. Todas las solicitudes y transacciones de datos se enrutan de manera segura a través de este SDK, reduciendo la complejidad de las llamadas REST o GraphQL manuales (aunque aún puedes usarlas cuando sea necesario).
Con tu proyecto de Back4app configurado y el SDK de Parse integrado en tu aplicación Node, ahora puedes comenzar a guardar y recuperar datos. La forma más sencilla de crear un registro es usar la Parse.Object clase:
Al completar este paso, has establecido una conexión segura entre tu backend NodeJS y la infraestructura de Back4app. Todas las solicitudes y transacciones de datos se enrutan de manera segura a través de este SDK, reduciendo la complejidad de las llamadas REST o GraphQL manuales (aunque aún puedes usarlas cuando sea necesario).
Alternativamente, puedes usar los puntos finales de la API REST de Back4app:
Back4app también proporciona una interfaz GraphQL:
Estas diversas opciones te permiten integrar operaciones de datos de la manera que mejor se adapte a tu proceso de desarrollo, ya sea a través del SDK de Parse, REST o GraphQL.
Por defecto, Parse permite la creación de esquemas sobre la marcha, pero también puedes definir tus clases y tipos de datos en el panel de control de Back4app para tener más control.
- Navega a la sección “Base de datos” en tu panel de control de Back4app.
- Crea una nueva clase (por ejemplo, “Todo”) y agrega columnas relevantes, como título (String) y isCompleted (Boolean).
![Crear Nueva Clase Crear Nueva Clase](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/iaZ_P-7epc_LSMFIPlaZV_image.png?format=webp)
Back4app también admite varios tipos de datos: String, Number, Boolean, Object, Date, File, Pointer, Array, Relation, GeoPoint, y Polygon. Puedes elegir el tipo apropiado para cada campo. Si lo prefieres, también puedes dejar que Parse cree automáticamente estas columnas cuando guardes por primera vez un objeto desde tu aplicación Node.
![Crear Columna Crear Columna](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/DEh9vyxdBTZcslXxkVQMA_image.png?format=webp)
Back4app ofrece un Agente de IA que puede ayudarte a diseñar tu modelo de datos:
- Abre el Agente de IA desde el Panel de Control de tu App o en el menú.
- Describe tu modelo de datos en un lenguaje simple (por ejemplo, “Por favor, crea una nueva App de ToDo en back4app con un esquema de clase completo.”).
- Deja que el Agente de IA cree el Esquema por ti.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/0snNZwHWzxuXlNu30n7IA_image.png?format=webp)
Usar el Agente de IA puede ahorrarte tiempo al configurar tu arquitectura de datos y asegurar consistencia en tu aplicación.
Si tienes datos relacionales - digamos, un objeto Categoría que apunta a múltiples elementos Todo - puedes usar Punteros o Relaciones en Parse. Por ejemplo, agregar un puntero a una Categoría:
Cuando consultas, también puedes incluir datos de punteros:
Esta include('category') llamada obtiene los detalles de la categoría junto a cada Todo, haciendo que tus datos relacionales sean accesibles sin problemas.
Para actualizaciones en tiempo real, Back4app proporciona Consultas en Vivo. En tu aplicación NodeJS, puedes suscribirte a cambios en una clase específica:
- Habilitar Consultas en Vivo en tu panel de Back4app bajo Configuraciones del Servidor. Asegúrate de que “Consultas en Vivo” esté activado.
- Inicializar una Suscripción de Consulta en Vivo en tu código:
Al suscribirte, recibes notificaciones en tiempo real cada vez que se crea, actualiza o elimina un nuevo Todo. Esta función es particularmente valiosa para aplicaciones colaborativas o dinámicas donde múltiples usuarios necesitan ver los últimos datos sin sondear manualmente el servidor.
Back4app toma la seguridad en serio al proporcionar Listas de Control de Acceso (ACLs) y Permisos a Nivel de Clase (CLPs). Estas características te permiten restringir quién puede leer o escribir datos a nivel de objeto o de clase, asegurando que solo los usuarios autorizados puedan modificar tus datos.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/PdAyrw1nqA1QQJFuCc-4t_image.png?format=webp)
Una ACL se aplica a objetos individuales para determinar qué usuarios, roles o el público pueden realizar operaciones de lectura/escritura. Por ejemplo:
Cuando guardas el objeto, tiene un ACL que impide que cualquier persona, excepto el usuario especificado, lo lea o lo modifique.
![Editar ACL Editar ACL](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/3YNfxEcv7CKdLC6ca8my6_image.png?format=webp)
Los CLPs rigen los permisos predeterminados de toda una clase, como si la clase es legible o escribible públicamente, o si solo ciertos roles pueden acceder a ella.
- Ve a tu Panel de Control de Back4app, selecciona tu aplicación y abre la Base de Datos sección.
- Selecciona una clase (por ejemplo, “Todo”).
- Abre la pestaña de Permisos a Nivel de Clase.
- Configura tus predeterminados, como “Requiere Autenticación” para leer o escribir, o “Sin Acceso” para el público.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/MF1Uf7HSJF03Xg6djap9m_image.png?format=webp)
Estos permisos establecen la línea base, mientras que las ACLs ajustan los permisos para objetos individuales. Un modelo de seguridad robusto típicamente combina tanto CLPs (restricciones amplias) como ACLs (restricciones específicas por objeto). Para más información, visita Directrices de Seguridad de la Aplicación.
El Código en la Nube es una característica del entorno de Parse Server que te permite ejecutar código JavaScript personalizado en el lado del servidor, sin necesidad de gestionar tus servidores o infraestructura. Al escribir Código en la Nube, puedes extender tu backend de Back4app con lógica de negocio adicional, validaciones, disparadores e integraciones que se ejecutan de manera segura y eficiente en el Parse Server.
Cuando escribes Cloud Code, normalmente colocas tus funciones de JavaScript, disparadores y cualquier módulo NPM requerido en un main.js (u otro archivo JS) y lo despliegas en tu proyecto de Back4app. Este código se ejecuta dentro del entorno de Parse Server. Dado que estas funciones y disparadores se ejecutan en el servidor, puedes confiar en que manejan lógica confidencial, procesan datos sensibles o realizan llamadas a API solo del backend, procesos que quizás no quieras exponer directamente al cliente.
Todo el Cloud Code para tu aplicación de Back4app se ejecuta dentro del Parse Server que es gestionado por Back4app, así que no tienes que preocuparte por el mantenimiento del servidor, escalado o aprovisionamiento. Cada vez que actualizas y despliegas tu archivo, el Parse Server en ejecución se actualiza con tu último código.
Estructura del archivo main.js Un típico main.js podría contener:
- Requerir declaraciones para cualquier módulo necesario (paquetes NPM, módulos integrados de Node, u otros archivos de código en la nube).
- Definiciones de funciones en la nube usando Parse.Cloud.define().
- Disparadores como Parse.Cloud.beforeSave(), Parse.Cloud.afterSave(), etc.
- Módulos NPM que instalaste (si es necesario). Por ejemplo, podrías instalar un paquete como axios para hacer solicitudes HTTP. Luego puedes require en la parte superior de tu archivo.
Con la capacidad de instalar y usar módulos NPM, el Cloud Code se vuelve increíblemente flexible, permitiéndote integrarte con APIs externas, realizar transformaciones de datos o ejecutar lógica compleja del lado del servidor.
- Lógica de Negocios: Por ejemplo, puedes calcular la puntuación de un usuario en un juego agregando múltiples propiedades de objeto, y luego almacenar esos datos automáticamente.
- Validaciones de Datos: Asegúrate de que ciertos campos estén presentes o de que un usuario tenga los permisos correctos antes de guardar o eliminar un registro.
- Disparadores: Realiza acciones cuando los datos cambian (por ejemplo, envía una notificación cuando un usuario actualiza su perfil).
- Integraciones: Conéctate con APIs o servicios de terceros. Por ejemplo, podrías integrarte con pasarelas de pago, notificaciones de Slack o plataformas de marketing por correo electrónico directamente desde Cloud Code.
- Aplicación de Seguridad: Agrega una capa adicional de seguridad validando y sanitizando los parámetros de entrada en tus funciones de Cloud Code.
A continuación se muestra una función simple de Cloud Code que calcula la longitud de una cadena de texto enviada desde el cliente:
Desplegando a través de la Back4app CLI:
1 - Instalar el CLI:
- Para Linux/MacOS:
3 - Despliega tu código en la nube:
Desplegando a través del Panel de Control:
- En el panel de control de tu aplicación, ve a Cloud Code > Functions.
- Copia/pega la función en el main.js editor.
- Haz clic en Desplegar.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/pGxBQFBhk4prMc8Ub-uho_image.png?format=webp)
Desde tu código NodeJS usando el SDK de Parse:
También puedes llamarlo a través de REST:
O a través de GraphQL:
Esta flexibilidad te permite integrar tu lógica personalizada en cualquier parte de tu entorno NodeJS u otros clientes que soporten REST o GraphQL.
Back4app aprovecha la Parse User clase como base para la autenticación. Por defecto, Parse maneja el hash de contraseñas, tokens de sesión y almacenamiento seguro. Esto significa que no tienes que configurar flujos de seguridad complejos manualmente.
En un entorno NodeJS, puedes crear un nuevo usuario con:
Iniciar sesión con un usuario existente:
A través de REST, un inicio de sesión podría verse así:
Después de un inicio de sesión exitoso, Parse crea un token de sesión que se almacena en el objeto del usuario. En tu código de Node, puedes acceder al usuario actualmente conectado si mantienes sesiones en la lógica de tu aplicación:
Parse maneja automáticamente las sesiones basadas en tokens en segundo plano, pero también puedes gestionarlas o revocarlas manualmente. Para cerrar sesión:
Back4app y Parse pueden integrarse con proveedores de OAuth populares, como Google o Facebook, instalando paquetes adicionales o utilizando adaptadores existentes. Por ejemplo, puedes configurar un inicio de sesión de Facebook configurando tu ID de Aplicación de Facebook y utilizando Parse.FacebookUtils.logIn(). Las instrucciones detalladas varían, así que consulta la Documentación de Inicio de Sesión Social.
Para habilitar la verificación de correo electrónico y el restablecimiento de contraseña:
- Navega a la Configuración de Correo Electrónico en tu panel de Back4app.
- Habilita la verificación de correo electrónico para asegurar que los nuevos usuarios verifiquen la propiedad de sus direcciones de correo electrónico.
- Configura la dirección del remitente, las plantillas de correo electrónico y tu dominio personalizado si lo deseas.
Estas características mejoran la seguridad de la cuenta y la experiencia del usuario al validar la propiedad del correo electrónico y proporcionar un método seguro de recuperación de contraseña.
Parse incluye la Parse.File clase para manejar las cargas de archivos, que Back4app almacena de forma segura:
Para adjuntar el archivo a un objeto en la base de datos, puedes hacer:
Recuperar la URL del archivo es sencillo:
Parse Server proporciona configuraciones flexibles para gestionar la seguridad de las cargas de archivos. El siguiente ejemplo muestra cómo puedes establecer permisos para controlar quién puede cargar archivos en el servidor:
{ "fileUpload": { "enableForPublic": true, "enableForAnonymousUser": true, "enableForAuthenticatedUser": true } }
- enableForPublic: Cuando se establece en verdadero, permite que cualquier persona, independientemente del estado de autenticación, cargue archivos.
- enableForAnonymousUser: Controla si los usuarios anónimos (no registrados) pueden cargar archivos.
- enableForAuthenticatedUser: Especifica si solo los usuarios autenticados pueden cargar archivos. Esto es ideal para asegurar que solo los usuarios de confianza tengan acceso a esta funcionalidad.
Trabajos en la Nube en Back4app te permiten programar y ejecutar tareas rutinarias en tu backend - como limpiar datos antiguos o enviar un correo electrónico de resumen diario. Un trabajo en la nube típico podría verse así:
- Despliega tu Código en la Nube con el nuevo trabajo (a través de CLI o el panel de control).
- Ve al Panel de Control de Back4app > Configuraciones de la Aplicación > Configuraciones del Servidor > Trabajos en Segundo Plano.
- Programa el trabajo para que se ejecute diariamente o en el intervalo que se ajuste a tus necesidades.
![Programando un Trabajo en la Nube Programando un Trabajo en la Nube](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5wG60YnWIST74erryTb-u_image.png?format=webp)
Los trabajos en la nube te permiten automatizar el mantenimiento en segundo plano u otros procesos periódicos - sin requerir intervención manual.
Webhooks permiten que tu aplicación Back4app envíe solicitudes HTTP a un servicio externo cada vez que ocurren ciertos eventos. Esto es poderoso para integrarse con sistemas de terceros como pasarelas de pago (por ejemplo, Stripe), herramientas de marketing por correo electrónico o plataformas de análisis.
- Navega a la configuración de Webhooks en tu panel de Back4app > Más > WebHooks y luego haz clic en Agregar Webhook.
- Configura los disparadores para especificar qué eventos en tus clases de Back4app o funciones de Cloud Code activarán el webhook.
![Agregando un Webhook Agregando un Webhook](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/morUMdwsAbVQ1EmBfUfAA_image.png?format=webp)
Por ejemplo, si deseas notificar a un canal de Slack cada vez que se crea un nuevo Todo:
- Crea una aplicación de Slack que acepte webhooks entrantes.
- Copia la URL del webhook de Slack.
- En tu panel de control de Back4app, establece el endpoint a esa URL de Slack para el evento “Nuevo registro en la clase Todo.”
- También puedes agregar encabezados HTTP personalizados o cargas útiles si es necesario.
También puedes definir Webhooks en Cloud Code haciendo solicitudes HTTP personalizadas en disparadores como beforeSave, afterSave:
![WebHook BeforeSave WebHook BeforeSave](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/fXvy4eRzabyWmN80OMyqW_image.png?format=webp)
La Aplicación de Administración de Back4app es una interfaz de gestión basada en la web diseñada para usuarios no técnicos para realizar operaciones CRUD y manejar tareas rutinarias de datos sin escribir ningún código. Proporciona una interfaz centrada en el modelo, amigable para el usuario que simplifica la administración de bases de datos, la gestión de datos personalizados y las operaciones a nivel empresarial.
Habilítala yendo a Panel de la Aplicación > Más > Aplicación de Administración y haciendo clic en el botón “Habilitar Aplicación de Administración”.
![Habilitar Aplicación de Administración Habilitar Aplicación de Administración](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5BTk1ntDh9JLXurObmm_o_image.png?format=webp)
Crea un Primer Usuario Administrador (nombre de usuario/contraseña), que genera automáticamente un nuevo rol (B4aAdminUser) y clases (B4aSetting, B4aMenuItem y B4aCustomField) en el esquema de tu aplicación.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/u-pU1yBJJxa9KEM2psjXS_image.png?format=webp)
Elige un Subdominio para acceder a la interfaz de administración y completa la configuración.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/_2b71RLDTlQW468017saY_image.png?format=webp)
Iniciar sesión utilizando las credenciales de administrador que creaste para acceder a tu nuevo panel de control de la aplicación de administración.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/jOFU8C0qiFm6wiVZXS9l0_image.png?format=webp)
Una vez habilitada, la aplicación de administración de Back4app facilita la visualización, edición o eliminación de registros de tu base de datos, sin requerir el uso directo del Panel de Control de Parse o código de backend. Con controles de acceso configurables, puedes compartir de manera segura esta interfaz con miembros del equipo o clientes que necesiten una forma clara y fácil de gestionar datos.
Al seguir este tutorial completo, has:
- Creó un backend seguro para una aplicación NodeJS en Back4app.
- Configuró una base de datos con esquemas de clase, tipos de datos y relaciones.
- Integró consultas en tiempo real (Consultas en Vivo) para actualizaciones de datos inmediatas.
- Aplicó medidas de seguridad utilizando ACLs y CLPs para proteger y gestionar el acceso a los datos.
- Implementó Cloud Code funciones para ejecutar lógica de negocio personalizada en el lado del servidor.
- Configuró la autenticación de usuarios con soporte para verificación de correo electrónico y restablecimiento de contraseñas.
- Gestionó cargas de archivos y recuperación, con controles de seguridad de archivos opcionales.
- Programó trabajos en la nube para tareas automatizadas en segundo plano.
- Usó Webhooks para integrarse con servicios externos.
- Exploró el Panel de Administración de Back4app para la gestión de datos.
Con una sólida base en NodeJS y un robusto backend en Back4app, ahora está bien equipado para desarrollar aplicaciones ricas en funciones, escalables y seguras. Continúe explorando funcionalidades más avanzadas, integre su lógica de negocio y aproveche el poder de Back4app para ahorrarle innumerables horas en la administración de servidores y bases de datos. ¡Feliz codificación!
- Construir una aplicación NodeJS lista para producción extendiendo este backend para manejar modelos de datos más complejos, estrategias de caché y optimizaciones de rendimiento.
- Integrar características avanzadas como flujos de autenticación especializados, control de acceso basado en roles o APIs externas (como pasarelas de pago).
- Consulta la documentación oficial de Back4app para profundizar en seguridad avanzada, ajuste de rendimiento y análisis de registros.
- Explora otros tutoriales sobre aplicaciones de chat en tiempo real, paneles de IoT o servicios basados en ubicación. Puedes combinar las técnicas aprendidas aquí con APIs de terceros para crear aplicaciones complejas del mundo real.
![Doc contributor](https://s3.amazonaws.com/archbee-animals/cat.png)