Perdón por esta pregunta estúpida, pero ¿alguien puede explicarme cómo funciona el cors middleware?
Accidentalmente llamé a un middleware de autenticación agregando corchetes después y ejecutó ese middleware sin siquiera solicitar esa ruta.
Sé que agregar corchetes después de la función lo invoca, pero ¿qué pasa con cors middleware que agregamos esos corchetes después?
uso de cors middleware de docs:
app.get('/products/:id', cors(), function (req, res, next) { res.json({msg: 'This is CORS-enabled for a Single Route'}) })usar el middleware de autenticación con () da error:
app.get('/products/:id', auth(), function (req, res, next) { res.json({msg: 'This is an authorized Route'}) })el uso de middleware de autenticación sin () funciona bien:
app.get('/products/:id', auth, function (req, res, next) { res.json({msg: 'This is an authorized Route'}) })Las funciones pueden devolver otras funciones , cuando llamas a la función cors usando cors() , obtienes unanueva función , que se usa como función de middleware en app.get() . Su ejemplo cors() podría reescribirse así:
const corsMiddlewareFn = cors(); app.get('/products/:id', corsMiddlewareFn, function (req, res, next) { res.json({msg: 'This is CORS-enabled for a Single Route'}) }) Arriba, almacenamos la función que devuelve la llamada a cors() en una variable llamada corsMiddlewareFn , y luego la usamos como middleware como parte de la llamada a app.get() . Hacer que cors() devuelva una función es útil, ya que nos permite pasar opciones a la función cors() para que la función de middleware que devuelve pueda usar esas opciones en consecuencia.
Por otro lado, lo más probable es que su función de auth no devuelva una función, por lo que auth en sí es la función de middleware que desea usar, y no su valor de retorno que obtendría al llamar a auth() .
El módulo cors devuelve una función que toma una configuración opcional y devuelve el middleware.
La auth ya es el middleware, no una función, por lo que no es necesario llamarlo.