Je suis en train de créer un gestionnaire pour le middleware et j'ai découvert que lorsque vous renvoyez la chaîne route
comme argument pour le rappel next
, sa valeur est null
.Le routeur imbriqué ne renvoie pas le rappel suivant avec la valeur 'route'
Voici l'exemple:
var express = require('express')
var app = express()
app.use('/', function (req, res, next) {
var router = express.Router()
router.use(function (req, res, next) {
return next('route')
})
return router(req, res, function (nextValue) {
console.log('// value of next')
console.log(nextValue)
return next(nextValue)
})
})
app.use('/', function (req, res, next) {
return res.send('hi')
})
module.exports = app
Ce qui signifie que vous ne pouvez pas passer le gestionnaire suivant dans la manière suivante:
app.use('/', function (req, res, next) {
var router = express.Router()
router.use(function (req, res, next) {
return next('route')
})
return router(req, res, next)
})
Je sais que cela semble très redondant parce que vous pouvez simplement faire ceci: Cependant, je construis une bibliothèque qui doit utiliser un intergiciel imbriqué de cette manière. Il semble que ma seule option est d'utiliser une chaîne différente parce que si je le fais:
router.use(function (req, res, next) {
return next('anystring')
})
Le rappel next
ne fournit nextValue
avec anystring
.
Pourquoi la chaîne route
ne se propage pas via un middleware imbriqué?
Cela semble vraiment logique pour Express de ne pas retourner route
parce qu'à ce stade, route cette route est terminée.