Bonjour,
Après avoir abandonné un projet il y a trois ans je cherche à nouveau à me coller à Node.js à travers le framework Express 4. Mais j'ai des lacunes en javascript.
Il existe un générateur d’applications pour Express qui - s'il propose une base pour l'architecture d'une app - ne propose pas de découpage MVC : il sépare seulement les vues du reste de l'application entreposé dans un dossier "routes". Je cherche donc à désolidariser la logique métier du contrôleur.
J'y suis presque, mais je bloque sur un point. Voilà où j'en suis pour le fichier dédié aux requêtes :
Et mon fichier contrôleur pour les articles :
Merci pour vos éventuelles suggestions.
Modifié par Olivier C (27 Apr 2020 - 17:44)
Après avoir abandonné un projet il y a trois ans je cherche à nouveau à me coller à Node.js à travers le framework Express 4. Mais j'ai des lacunes en javascript.
Il existe un générateur d’applications pour Express qui - s'il propose une base pour l'architecture d'une app - ne propose pas de découpage MVC : il sépare seulement les vues du reste de l'application entreposé dans un dossier "routes". Je cherche donc à désolidariser la logique métier du contrôleur.
J'y suis presque, mais je bloque sur un point. Voilà où j'en suis pour le fichier dédié aux requêtes :
// models/articles.js
const db = require('../database')
const getArticle = (req, res, next) => db.one('SELECT * FROM article WHERE id = $1', req.params.id)
.then(data => {
res.render('article', data) // -> je cherche à déplacer cette ligne dans le fichier "controllers/article.js"
})
.catch(error => {
next()
})
module.exports = { getArticle: getArticle }
Et mon fichier contrôleur pour les articles :
// controllers/articles.js
const express = require('express')
const router = express.Router()
const { getArticle } = require('../models/article')
router.get('/article/:id([0-9]{1,7})', (req, res, next) => { // ex: '/article/1'
getArticle(req, res, next)
// <- c'est ici que je voudrais intégrer res.render(), mais je ne sais comment
})
module.exports = router
Merci pour vos éventuelles suggestions.
Modifié par Olivier C (27 Apr 2020 - 17:44)