Экспресс req.query возвращает или пустой объект или неопределенный - PullRequest
0 голосов
/ 09 октября 2019

Я хочу, чтобы мой URL содержал строки запроса и заставлял их использовать фильтры со стороны сервера. Но независимо от того, что я делаю, я всегда получаю или пустой объект - когда я пытаюсь сделать console.log "req.query" или неопределенным, если я пытаюсь указать console.log "req.query.test" (url будет http://localhost:3000/products?test=1)

Мой контроллер:

exports.index = function (req, res) {
  console.log(req.query.test) //gives me undefined
  Category.find({}).then((categories) => {
    res.send(categories)
  });
}

Маршруты:

const express = require('express');
const router = express.Router();

const category_controller = require("../../controllers/categoryController");

router.get('/', category_controller.index);
router.get('/:id', category_controller.show);
router.post('/', category_controller.create);
router.put('/:id', category_controller.update);
router.delete('/:id', category_controller.delete);

module.exports = router;

И файл app.js

app.use('/api/v1/categories', passport.authenticate('jwt', { session: false }), categories)

Это то, что консоль возвращает

OPTIONS /api/v1/categories 204 2.772 ms - 0
undefined
GET /api/v1/categories 304 69.694 ms - -

ОБНОВЛЕНИЕ: с помощью почтальона это работает. Но когда я использую браузер, он возвращает неопределенное значение.

Очистка кэша не работает.

Я думаю, что это проблемас OPTIONS, так как он вызывается перед GET.

OPTIONS /api/v1/categories 204 8.938 ms - 0
undefined
GET /api/v1/categories 304 104.363 ms - -

в то время как в почтальоне, OPTIONS не вызывается

1 . // http://...?test=1
GET /api/v1/categories?test=1 200 113.413 ms - 541

Кто-нибудь знает, как решить эту проблему? или еслиЯ могу избавиться от опций звонка?

...