Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
Cómo seguir la arquitectura MVC en la aplicación web usando Node, Express, Postgresql

No estoy seguro de cómo aplicar la arquitectura MVC a mi aplicación web de nodo, en concreto, separando el modelo del controlador.

La estructura actual tiene las vistas separadas correctamente (todos mis archivos .ejs) y luego supongo que mi app.js es como el controlador, ya que contiene todas las rutas para responder a las solicitudes http. Luego, las rutas se manejan en un archivo queries.js , que es donde consulto mi base de datos usando node-postgres (la mayoría de las vistas representadas muestran información de la base de datos o muestran formularios para que el usuario pueda insertar datos en la base de datos). ¿Debería hacer esto de manera diferente, o más específicamente, debería intentar crear un modelo que contenga datos sin procesar de la base de datos y hacer que los controladores de ruta manipulen estos datos en lugar de consultar directamente la base de datos (no estoy seguro de cómo manejaría la inserción en la base de datos entonces ...)? Solo me preocupa que la forma actual en que he estructurado mi aplicación web haga que sea difícil de administrar a medida que crece y que otros la entiendan y agreguen.

Este es un ejemplo de cómo está estructurada actualmente la aplicación web: digamos que un usuario hace clic en un botón para mostrar todos los pedidos activos, mi archivo app.js se vería así

 const db = require('./queries') app.get('/activeorders', db.getActiveOrders)

Mi archivo queries.js manejaría esta ruta así:

 const Pool = require('pg').Pool const pool = new Pool({ user: process.env.USER, host: process.env.HOST, database: process.env.DB, password: process.env.PASSWORD, port: process.env.PORT, }) const getActiveOrders = (request, response) => { const queryOrders = 'SELECT * FROM orders WHERE complete=0 ORDER BY date_rec DESC;'; pool.query(queryOrders, (error, results) => { if(error) { throw error } var ordersObj = results.rows; response.render('pages/activeorders', { ordersObj: ordersObj }) }) } module.exports = { getActiveOrders, }

Como se puede ver en el controlador, se consulta la base de datos y se almacenan los resultados en un objeto que luego se pasa al archivo activeorders.ejs cuando se procesa.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

En el patrón MVC, dividimos cada parte de la aplicación porque este enfoque del desarrollo de software para necesidades complejas conecta la implementación a un modelo en evolución.

Le sugiero que visite sample-mvc-express-postgres para comprender el código de estructura

Si está interesado en el patrón de diseño, visite https://dev.to/salah856/implementing-domain-driven-design-part-i-5a72 . Este enlace explica cómo usar DDD en su aplicación y muestra cómo diseñar cada capa. de la aplicación

about 4 years ago · Juan Pablo Isaza Report

0

Tal vez usando un middleware que le permita crear una API desde una base de datos Postgresql.

Cualquier cambio realizado en las bases de datos se propagará y estará disponible para su API. También permitirá mucha modularidad a posibles filtros/seleccionar...

Y para consultas complejas, DBA podrá desarrollar procesos almacenados disponibles para todos por API. Esa es la capa Modelo . Solo SQL expuesto a través de un middleware.

El controlador será la forma en que realizó sus llamadas API y transformaciones de datos si es necesario para actualizar los datos en función de su Vista

Abstraer la capa del modelo con un middleware definitivamente es una gran economía de tiempo.

Para las opciones de postgres majors: postgres y pgrest

about 4 years ago · Juan Pablo Isaza Report

0

Establezca app.js como archivo raíz y cree un controlador y una carpeta modelo. Defina todos los modelos en la carpeta del model , mientras que en el controlador primero importe los controladores de archivos del modelo y cree todas las funciones de API o consultas. Luego, en el controlador de funciones del controlador de importación de archivos raíz app.js y ejecútelo.

esta imagen contiene estructura de carpetas

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!