Не могу получить доступ к пользовательскому значению в запросе NodeJS - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь сохранить случайное значение в моем запросе Как это:

req.name = "Mark"

Проблема в том, что я могу получить к нему доступ только в том контроллере, который установил. Когда я

console.log(req.name)

в другом контроллере я получаю undefined.

Мой код здесь:

export const getCaptcha = async (req, res, next) => {
    const captcha = await svgCaptcha.createMathExpr({
        size: 5,
        noise: 3,
        color: true,
        background: '#08af96'
    })

    req.captcha = captcha.text
    res.status(200).send(captcha.data)
}

export const checkCaptcha = (req, res, next) => {
    const { result } = req.body
    console.log(req.captcha)
    // if (result !== req.captcha) {
    //  throw new Error('Invalid captcha!')
    // }

    // res.status(200).json({
    //  message: 'Success'
    // })
}

Компонент маршрута:

import express from 'express'
import { getCaptcha, checkCaptcha } from '../controllers/captcha'

const router = express.Router()

router.get('/captcha', getCaptcha)
router.post('/captcha', checkCaptcha)

export default router

App.js

import captchaRoutes from './routes/captcha'    
app.use(captchaRoutes)

Спасибо за помощь.

1 Ответ

1 голос
/ 15 марта 2019

Поскольку getCaptcha и checkCaptcha - это два разных промежуточных программного обеспечения, используемых в двух разных конечных точках, объект req не разделяется между вашими запросами.Поэтому, если вы установите какое-либо свойство в req во время определенного запроса, вы никогда не получите это значение из другого запроса, потому что объект req будет совершенно новым.

Так что вам нужно иметь другое место, где вы храните свою капчуИнформация.

Например, это может быть redis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...