404 при добавлении параметров в экспресс-маршрут - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь передать URL-адрес, как

http://xxx/api/users?facebookUserId=10213594301678639

Вот мой App.js:

// route setup
const usersRouter = require('./routes/users');
app.use('/api/users', usersRouter);

module.exports = app;

а вот мои users.js:

router.get('/:facebookUserId', jsonParser, async (req, res) => {
  // get user by facebookUserId
  const users = db.collection('users');  
  const facebookUserId = req.params.facebookUserId; 
  const query = {
    facebookUserId: facebookUserId,
  };
  const user = await findOne(users, query);
  res.json(user);
});

module.exports = router;

Моя проблема в том, что я получаю 404, как только я добавляю

: facebookUserId

на router.get ()

Ответы [ 3 ]

0 голосов
/ 17 января 2019

В вашем маршруте вы ожидаете, что параметр facebookUserId будет параметром маршрута (например, / api / users / 10213594301678639), но в приведенном выше примере вы вызываете маршрут с параметром запроса (/ api / пользователи? facebookUserId = 10213594301678639)

0 голосов
/ 17 января 2019

делает следующее, чтобы захватить работу параметров запроса:

router.get(':facebookUserId?' ... (req, res) => { 
 ... 
 const facebookUserId = req.query.facebookUserId; 
 ... 
});
0 голосов
/ 17 января 2019

Кажется, вы пытаетесь получить строку запроса, а не параметр из маршрута получения конечной точки.

В вашем users.js получите строку запроса из req.query

// as your path is the same with the endpoint prefix api/users, use '/'
router.get('/', jsonParser, async (req, res) => {
  // get user by facebookUserId
  const users = db.collection('users');  

  // get the query string from req.query
  const facebookUserId = req.query.facebookUserId; 

  const query = {
    facebookUserId: facebookUserId,
  };
  const user = await findOne(users, query);
  res.json(user);
});

module.exports = router;

Если вы хотите использовать вместо /:facebookUserId параметр, как в исходном коде, вам нужно изменить вызов конечной точки, чтобы он был таким, как http://xxx/api/users/10213594301678639

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