誰かがここで何が起こっているのか説明できますか?私はこれらが表現のためのミドルウェアであることを知っています、私は構文を見ています。Javascript es6 - 再割り当てまたはパラメータですか?
私はmustBeLoggedIn
のes6の構文を理解していますが、const forbidden = message => (req, res, next) => {
は何をしているのですか? message
req、res、nextの前に来る別のパラメータですか?もしそうなら、なぜかっこ内にないのですか?もともと私はこれが関数に別の変数名を代入しているだけだと考えました。だから私はそれをforbidden()
またはmessage()
といいますか?しかし、それがどのように使用されているかを見て、それはパラメータのように見える...
私が気付いたもう一つの興味深いものは、mustBeLoggedIn
が呼び出されていないと、取得要求でミドルウェアforbidden
が呼び出されているということです。どうして?
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