Saya mencoba memahami cara menggunakan middleware tingkat aplikasi (atau setidaknya biasanya digunakan seperti ini) seperti cookie-parser pada tingkat rute dan kondisional.

Saya mencoba sesuatu seperti:

const myMiddleware = (req, res, next) => {
 if (myCondition) {
   return cookieParser();
 } else {
   next();
 }
}

app.use('/admin', myMiddleware, (req, res) => {
 res.sendStatus(401)
})

Tapi itu tidak berhasil, permintaannya hanya akan macet.

Apakah ini mungkin?

Implementasi cookie-parser tradisional:

app.use(cookieParser())
0
Holis 18 Mei 2021, 22:50

1 menjawab

Jawaban Terbaik

cookieParser() mengembalikan fungsi middleware, yaitu fungsi yang mengambil req, res, next sebagai argumen. Anda hanya perlu memberikan argumen:

const cookieParserMiddleware = cookieParser();

const myMiddleware = (req, res, next) => {
  if (myCondition) {
    return cookieParserMiddleware(req, res, next);
  }

  next();
};

app.use("/admin", myMiddleware, (req, res) => {
  res.sendStatus(401);
});

Perhatikan bahwa saya membuat middleware cookieParser di luar myMiddleware - secara teknis kami juga dapat melakukan return cookieParser()(req, res, next) tetapi membuat ulang middleware yang sama berulang kali pada setiap permintaan akan sia-sia.

Saya juga telah menghapus else sejak if memblokir returns dari fungsi (klausa penjaga).

1
cbr 18 Mei 2021, 20:08