Может кто-нибудь объяснить, что здесь происходит? Я знаю, что это промежуточное программное обеспечение для выражения, я смотрю на синтаксис.Javascript es6 - это переназначение или параметр?
Я понимаю синтаксис es6 для mustBeLoggedIn
, но я не уверен, что делает const forbidden = message => (req, res, next) => {
. Есть message
еще один параметр, который предшествует req, res, next? Если да, то почему это не в скобках? Первоначально я думал, что это просто присвоение функции переменной имени переменной. Поэтому я мог бы назвать это forbidden()
или message()
, нет? Но глядя на то, как он используется, он больше похож на параметр ...
Еще одна интересная вещь, которую я заметил, заключается в том, что промежуточное ПО forbidden
вызывается в запросе на получение, а mustBeLoggedIn
передается и не вызывается. Зачем?
const mustBeLoggedIn = (req, res, next) => {
if (!req.user) {
return res.status(401).send('You must be logged in')
}
next()
}
const forbidden = message => (req, res, next) => {
res.status(403).send(message)
}
module.exports = require('express').Router()
\t .get('/', forbidden('only admins can list users'), (req, res, next) =>
\t \t User.findAll()
\t \t .then(users => res.json(users))
\t \t .catch(next))
\t .post('/', (req, res, next) =>
\t \t User.create(req.body)
\t \t .then(user => res.status(201).json(user))
\t \t .catch(next))
\t .get('/:id', mustBeLoggedIn, (req, res, next) =>
\t \t User.findById(req.params.id)
\t \t .then(user => res.json(user))
\t \t .catch(next))
спасибо, это имеет большой смысл! – Turnipdabeets
@AnnaGarcia - Я добавил ответы на другие ваши вопросы. – jfriend00
Большое вам спасибо! Я заметил, что о запрете всегда возвращался 403 и задавался вопросом, почему, но забыл спросить об этом, так что спасибо за ответ, что так же ха-ха. Я предполагаю, что это ошибка в коде, так как я ее не писал. – Turnipdabeets