Comment empêcher l'exécution ultérieure du middleware Express
P粉674999420
P粉674999420 2024-01-02 11:41:53
0
1
404

Je souhaite obtenir cette fonction if(thereIsSomeError) //Arrêter la poursuite de l'exécution. Par exemple, si une erreur se produit dans le middleware ou le rappel, je ne souhaite pas exécuter davantage le rappel (dans app.route) et le middleware. J'ai essayé ce code. Mais je pense toujours que req.err est vrai. Comment puis-je résoudre ce problème

// My MiddleWare
export let Middleware=()=> {
return (req,res,next)=>{
    next()
    console.log(req.err) // Problem is here.. i'm still getting req.err(true)
    if(!req.err){
        db.query(`query`,(error, responseData)=>{
            if(error) console.log(error)
            db.query(`second query`,{...// send data to the 
database})
        })
        }
    }
}



//End point    
app.post('/addStudent',Middleware, (req, res) => {
//setting error to true initially
    req.err=true;
    let data = req.body
    db.query(`query `, data.username, (err, d) => {
        if (err) return res.json(err)
        else {
        // since no Error accured so set the error to false
        req.err=false;
            let q = 'query';
            let values = {//data here}

            db.query(q, values, (err, data) => {
                if (err) return res.status(200).json(err)
                else return res.status(200).json({ data })
            })
        }
    })
})


P粉674999420
P粉674999420

répondre à tous(1)
P粉198814372

Tout d’abord, le middleware s’exécute avant la requête, pas après. Si vous définissez req.err = true dans le point de terminaison POST, il restera VRAI, ce qui signifie que votre appel à la base de données renverra certainement une erreur.

Deuxièmement, pour abandonner avec succès l'appel du middleware, utilisez return。返回一个函数会立即停止它。您可以选择返回 next(err) 将错误转发给处理程序,或者使用 return res.send('Error') terminer le middleware de réponse.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!