Comment réaliser une redirection vers un fichier Pug au sein d'une callback MongoDB ?

a marqué ce sujet comme résolu.

Bonjour à tous,

Je voudrais utiliser la fonction redirect du paquetage Node.js "Express" en-dehors des fonctions express().get, express().post et équivalentes, tout en faisant usage de cette méthode redirect au sein de la fonction MongoDBClient connect (si une erreur est levée lors de la connexion à la base de données).

L’objectif est tout simplement d’afficher une page Web en cas d’erreur lors de ladite connexion à la BDD.

La redirection se fait vers un fichier Pug, c’est pourquoi je fais usage de la méthode render dans le code qui suit.

Ma question est : comment pourrais-je utiliser redirect (par exemple), afin de réaliser cela ? En effet, je n’ai aucun objet res à ma disposition puisque je n’utilise pas de express().get

Merci d’avance, bonne journée !

Source

Voici le source que j’ai écrit ; il doit être complété mais je ne sais pas comment.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
const express = require('express');
const app = express();
const mongo_client = require('mongodb').MongoClient;
mongo_client.connect("mongodb://localhost:27016/my_db", (error, database) => {
        if(error) { // If an error has been raised while connecting to the database
            app.locals.error = error;
            app.render('db_error.jade', (error, rendered) => { // We generate the HTML code and pass it to a redirection
                // But how ???
                if(error) {
                    throw error;
                }
            });
            throw error;
        }

En soit tu ne peux pas rediriger pour une raison plus simple : tu n’es pas dans une requête HTTP, tu ne peux donc rien rediriger.

La solution la plus simple que je vois est d’indiquer dans une variable globale s’il y a eu une erreur Mongo, puis avec un middleware de rediriger vers ta page d’erreur pour chaque requête (qui n’est pas vers la page d’erreur, évidemment).

Heum je n’ai pas encore vu la notion de "middleware". Je crois que je dois utiliser use mais bon, en vrai je ne vois pas du tout comment m’y prendre ; est-ce que je peux te demander d’écrire un petit exemple qui soit fonctionnel et que je puisse implémenter rapidement s’il te plaît ? =/

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte