Bagaimana untuk menghalang pelaksanaan lanjut perisian tengah Express
P粉674999420
P粉674999420 2024-01-02 11:41:53
0
1
506

Saya ingin mendapatkan fungsi ini jika(thereIsSomeError) //Hentikan pelaksanaan selanjutnya. Contohnya jika beberapa ralat berlaku dalam middleware atau panggilan balik maka saya tidak mahu melaksanakan panggilan balik (dalam app.route) dan middleware selanjutnya Saya mencuba kod ini. Tetapi saya masih fikir req.err adalah benar. Bagaimana saya boleh menyelesaikan masalah ini

// 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

membalas semua(1)
P粉198814372

Pertama sekali, middleware dijalankan sebelum permintaan, bukan selepas. Jika anda menetapkan req.err = true dalam titik akhir POST, ia akan kekal BENAR, bermakna panggilan pangkalan data anda pasti akan mengembalikan ralat.

Kedua, untuk berjaya membatalkan panggilan middleware, gunakan return。返回一个函数会立即停止它。您可以选择返回 next(err) 将错误转发给处理程序,或者使用 return res.send('Error') tamatkan middleware respons.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan